【问题标题】:WxPython wxSplitterWindow.SplitVertically always shows uneven splitWxPython wxSplitterWindow.SplitVertically 总是显示不均匀分割
【发布时间】: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 上得到了相同的行为。也许这是一个错误或我们都做错了什么?

标签: python wxpython


【解决方案1】:

我遇到了同样的问题,经过反复试验,我发现这个修改解决了问题

self.splitter.SplitHorizontally(self.leftPanel, self.rightPanel, 100)

但这取决于框架的大小。

我正在使用 wxpython 版本 3.0.0.0

【讨论】:

    猜你喜欢
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    相关资源
    最近更新 更多