gpt4 book ai didi

python - 使用 PyGtk 时 GUI 未从另一个线程更新

转载 作者:太空狗 更新时间:2023-10-29 22:14:27 25 4
gpt4 key购买 nike

我正在使用 PyGTK 构建 GUI 应用程序。我想从另一个线程更新 textview 小部件,但每次我尝试更新时小部件都没有更新。我应该怎么做才能获得可靠的 GUI 更新?

最佳答案

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()

关于python - 使用 PyGtk 时 GUI 未从另一个线程更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com