python - 使用 wxpython 双缓冲

标签 python user-interface wxpython doublebuffered

我正在使用 wxpython 开发一个多平台应用程序,在 Panel 上绘图时,我在 Windows 上遇到了闪烁问题。 我曾经在鼠标移动事件期间在缓冲区 (wx.Bitmap) 上绘制,我的 OnPaint 方法仅由在线组成:

dc = wx.BufferedPaintDC(self, self.buffer)

非常标准,但我在 Windows 上仍然遇到闪烁问题,而在 Linux 上一切正常。

解决了我的问题,在 __init__ 方法中调用了 SetDoubleBuffered(True)

奇怪的是,即使我不再使用 BufferedPaintDC,现在一切正常。我更改了我的应用程序,以便所有绘图部分都在 OnPaint 方法中完成。我不使用缓冲区,而是直接在 wx.PaintDC 上完成绘图,完全没有闪烁问题。

所以我的问题是:BufferedPaintDC 完全没用吗?或者以某种方式弃用?我是“WxPython in Action”(2006 年)一书的所有者,它甚至没有提到 SetDoubleBuffered

最佳答案

SetDoubleBuffered 很有可能实际上让您的面板自动使用缓冲 dc,文档没有提到这些类已被弃用(我宁愿认为如果是这种情况他们会弃用)。

关于 wxPython in Action...2006 年是很久以前的事了...可能当时还不存在 SetDoubleBuffered 方法,或者作者想展示底层的工作原理。

关于python - 使用 wxpython 双缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/581085/

相关文章:

python - 在 Bokeh 中按下按钮时如何更改数据框?

python - 使用 ijson python 将 1.4 GB json 数据加载到 mysql

css - 我如何获得 JavaFX 8 日期选择器 CSS 属性

Java - Swing GUI 在 Windows 7 中呈现不正确

web-services - 在线图形用户界面设计工具

wxpython - 如何在wxpython中将图像作为背景

python - 将打印重定向到状态栏

来自另一个类实例的python类实例方法调用

Python 等效 R 代码 - 从纪元到 POSIXlt 的数字秒

python - VSCode WxPython包intellisense "Module ' wx'没有 'Frame'成员”