【发布时间】:2015-11-18 16:11:45
【问题描述】:
我正在尝试了解如何使用 wxSplitterWindow 类,但似乎无法使垂直分割均匀(即左右窗格各自占用相同数量的空间)。根据 wxPython 3.03 文档,wxSplitterWindow.SplitVertically 具有以下签名:
SplitVertically(self, window1, window2, sashPosition=0)
最后一个参数sashPosition有如下描述:
sashPosition - 窗扇的初始位置。如果此值为正,则它指定左窗格的大小。如果它是负数,它是绝对值,给出了右窗格的大小。最后,指定 0(默认)选择默认位置(窗口总宽度的一半)。
根据描述,我推测为 sashPosition 传递 0 会将窗口分成两半,左右窗格占用相等的空间。但是,当我运行以下示例程序时,我得到一个窗口,其拆分不均匀,其中几乎所有左侧面板都被隐藏了。
import wx
class SplitterFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='SplitterWindow example')
# Create the main splitter window (to be split vertically)
self.splitter = wx.SplitterWindow(self)
self.rightPanel = wx.Panel (self.splitter)
self.rightPanel.SetBackgroundColour(wx.BLUE)
self.leftPanel = wx.Panel (self.splitter)
self.leftPanel.SetBackgroundColour(wx.RED)
# Expecting an even split with this call
self.splitter.SplitVertically (self.leftPanel, self.rightPanel, 0)
if __name__ == '__main__':
app = wx.App(0)
frame = SplitterFrame()
frame.Show()
app.MainLoop()
我在 Windows 8.1 机器上使用 wxPython v3.0 工具包运行 Python v2.7.10。
【问题讨论】:
-
我的测试是
OK。你安装了pywin扩展吗? X86 X64 ?我的想法还没有访问钩子窗体。 -
您的代码在 Linux 上运行良好,python 版本相同,它必须是您的环境。
-
我在 Python 2.7 和 Windows 10 上的 wxPython 3.0 上得到了相同的行为。也许这是一个错误或我们都做错了什么?