为什么我在使用wx.SplitterWindow时会看到毛刺?

时间:2018-01-23 00:13:08

标签: python python-3.x wxpython visual-glitch

我目前在我的wxpython应用程序中使用wx.SpliterWindow。当我运行应用程序时,GUI显示正常。但是,当我尝试在分离器窗口的各部分之间移动分隔器时,会出现多个奇怪的水平多色毛刺。它们继续出现在我移动分隔线的任何地方。一旦我释放分频器,故障就会消失。 (我试图上传这种行为的图片或GIF,但是故障消失得太快而无法捕获。如果我能够制作图片或GIF,我会发布它。)

这是我正在运行的代码:

import wx


class Panel1(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent=parent, *args, **kwargs)
        self.SetBackgroundColour((0, 0, 255))


class Panel2(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent=parent, *args, **kwargs)
        self.SetBackgroundColour((0, 255, 0))


class Frame(wx.Frame):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        splitter = wx.SplitterWindow(self)
        panel1 = Panel1(splitter)
        panel2 = Panel2(splitter)

        splitter.SplitHorizontally(panel1, panel2)
        splitter.SetMinimumPaneSize(20)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(splitter, 1, wx.EXPAND)
        self.SetSizer(sizer)


class App(wx.App):
    def OnInit(self):
        editor = Frame(None, title='wxPython')
        editor.Show()
        return True


if __name__ == '__main__':
    app = App(False)
    app.MainLoop()

在certian平台上使用wx.SplitterWindow时,这种行为是否是一个明显的错误?我在wxPython's issues page上找不到任何内容。

这是我的规格

  • Windows 10.0
  • Python 3.6.1
  • wxPython 4.0.0b2

1 个答案:

答案 0 :(得分:1)

这不是错误,只需设置标记wxSP_LIVE_UPDATE。 在DOC中,此标志将

  

不要绘制XOR行,而是立即调整子窗口的大小。

在python中,只需写下来 splitter = wx.SplitterWindow(self, style = wx.SP_LIVE_UPDATE),然后它将正常执行。