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

寻找更好的避免闪烁的方法(windows上的wxpython),python,wxpython,Python,Wxpython,我确实发现父面板中的SetDoubleBufferedTrue可以修复闪烁的问题,主要是wx.StaticText,但它会降低整个UI的速度,尤其是在对列排序时ObjectListView元素的速度。因此,我搜索了一点,根据,去除wx的背景擦除。StaticText应该可以完成这项工作: class NoFlickeringTxtCtrl(wx.StaticText): def __init__(self, parent, id=-1, label="", pos=wx.DefaultP

我确实发现父面板中的SetDoubleBufferedTrue可以修复闪烁的问题,主要是wx.StaticText,但它会降低整个UI的速度,尤其是在对列排序时ObjectListView元素的速度。因此,我搜索了一点,根据,去除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闪烁?

据我所知,您的代码没有摆脱背景擦除。要实现这一点,您必须替换evt.Skip旁路


如果这也不起作用,请尝试放弃StaticText的父面板的EVT_ERASE_背景。这有助于我在EVT_PAINT上绘制面板时避免闪烁。

听到这个消息很抱歉。为了便于文档记录,您可以发布一个最小的运行示例吗?