GTK
+不是线程安全的,因此您不应简单地从其他线程调用GUI更新方法。glib.idle_add(或在较旧的PyGTK版本中为gobject.idle_add)可用于此目的。
而不是写:
label.set_text("foo")你会写:
glib.idle_add(label.set_text, "foo")
这导致函数调用在GTK +中排队。
如果您需要运行多个语句,通常将它们包装到一个函数中会更容易:
def idle(): label1.set_text("foo") label2.set_text("bar")glib.idle_add(idle)确保传递给的函数
idle_add不返回
True;否则它将再次排队。
编辑: 正如Daniel指出的,您需要
gtk.gdk.threads_init()首先在程序中的任何地方调用。



