寻找更好的方法来避免闪烁(Windows上的wxpython)

时间:2015-04-11 15:23:14

标签: python wxpython

我确实在父面板中找到SetDoubleBuffered(True)可以解决闪烁问题(主要来自wx.StaticText),但是当您对列进行排序时,它会减慢整个UI,尤其是ObjectListView元素。所以我搜索了一下,根据https://wiki.wxwidgets.org/Flicker-Free_Drawing,摆脱wx.StaticText的背景擦除应该做的工作:

class NoFlickeringTxtCtrl(wx.StaticText):
    def __init__(self, parent, id=-1, label="", pos=wx.DefaultPosition,
                 size=wx.DefaultSize, style=0, name="staticText"):
        wx.StaticText.__init__(self, parent, id, label, pos, size,
                            style, name)

        self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase)

    def OnErase(self, evt):
        evt.Skip()

但遗憾的是它不起作用,所以我想知道是否有更好的方法来避免wx.StaticText的闪烁?

1 个答案:

答案 0 :(得分:0)

据我所知,你的代码摆脱背景擦除。要做到这一点,您必须将evt.Skip()替换为pass

如果这也不起作用,请尝试放弃EVT_ERASE_BACKGROUND的父面板的StaticText(这有助于我在EVT_PAINT上绘制面板时摆脱闪烁