使用wxpython进行双缓冲

时间:2009-02-24 09:29:15

标签: python user-interface wxpython doublebuffered

我正在使用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

1 个答案:

答案 0 :(得分:5)

SetDoubleBuffered很可能实际上让你的面板自动使用缓冲直流,文档没有提到这些类已被弃用(我认为如果是这样的话,我认为会这样做。)

关于wxPython in Action ... 2006很久以前......当时可能没有SetDoubleBuffered方法存在或者作者希望在较低级别显示工作原理。