我正在使用wxpython进行多平台应用程序,并且在绘制Panel时我在Windows上出现了闪烁问题。 我曾经在鼠标运动事件中绘制缓冲区(wx.Bitmap),而我的OnPaint方法只是在线组成:
dc = wx.BufferedPaintDC(self, self.buffer)
非常标准,但我在Windows上遇到了闪烁的问题,而在Linux上一切正常。
我解决了我的问题在SetDoubleBuffered(True)
方法中调用__init__
。
奇怪的是,即使我不再使用BufferedPaintDC,现在一切正常。我更改了我的应用程序,以便所有绘图部分都在OnPaint方法中完成。我不使用缓冲区,直接在wx.PaintDC上完成绘图,完全没有闪烁问题。
所以我的问题是:BufferedPaintDC完全没用吗?或者以某种方式弃用?我是“WxPython in Action”(2006)一书的所有者,它甚至没有提到SetDoubleBuffered
答案 0 :(得分:5)
SetDoubleBuffered很可能实际上让你的面板自动使用缓冲直流,文档没有提到这些类已被弃用(我认为如果是这样的话,我认为会这样做。)
关于wxPython in Action ... 2006很久以前......当时可能没有SetDoubleBuffered方法存在或者作者希望在较低级别显示工作原理。