GLib.idle_add(function)针对不同的功能具有不同的策略

时间:2018-12-11 18:52:01

标签: python gtk glib

我有一个GTK窗口。事实证明,如果我使用idle_add(window.queue_draw)从一个单独的线程一次调度几个重绘调用,而没有任何延迟,那么将只执行一个调用。

如果我执行idle_add(custom_function),则每次对custom_function的预定调用都会运行。

虽然很明显,这是为了优化而完成的,但我看不到文档[1]中是否提到了此问题,我也想知道idle_add是否还有其他这样的规则。

[1] https://developer.gnome.org/pygobject/stable/glib-functions.html

1 个答案:

答案 0 :(得分:2)

实际上不是idle_add导致的。 widget-queue-draw-region的文档被queue-redraw调用,指出重新绘制仅在主循环不再繁忙之后才能完成。