如何让 PyGTK 和 Cairo 并行工作?

How to make PyGTK and Cairo work in parallel?

这个问题看起来好像已经出现了,实际上它已经在本主题中涉及到了 Parallel drawing with GTK and Cairo in Python 3。然而,这个问题是否有另一种解决方案?

首先,我在 PyGtk 中创建了 UI,并使用线程(Gtk.threads_enter()Gtk.threads_leave())。它运行良好并且没有给出任何错误。我还想添加某种点云,我看到 Cairo 可能很适合它,据说支持 Gtk.DrawingArea 来处理。

这里是问题开始的地方。由于 Cairo 使用绘图事件并且几乎覆盖了它,它绘制了我的 UI 我为 Gtk.DrawingArea[=29= 制作的图像].Image of cairo drawing over UI

因此图像出现在 DrawingArea 中,并在每个 UI 元素上再次绘制。我用这个教程https://blog.fossasia.org/creating-animations-in-gtk-with-pycairo-in-susi-linux-app/画了开罗动画

有没有办法以某种方式从 PyGTK 进行绘图调用以重绘 UI 元素,这样它们就不会被 Cairo 透支?

我回答了我自己的问题。对于 DrawingArea,Draw call 需要在其自己的 class 中,例如 https://blog.fossasia.org/creating-animations-in-gtk-with-pycairo-in-susi-linux-app/

我试图将它与我自己的主要 class 连接起来,但随后它重绘了整个 window 而不是仅重绘 DrawingArea。所以当你要使用Cairo的时候,记得把DrawingArea设为自定义class.