python – 使用PyGtk时,GUI未从其他线程更新

python – 使用PyGtk时,GUI未从其他线程更新,第1张

概述我正在使用PyGTK来构建GUI应用程序.我想从另一个线程更新textview小部件,但每次尝试更新时小部件都不会更新.我该怎么做才能获得可靠的GUI更新? GTK不是线程安全的,因此您不应该简单地从其他线程调用GUI更新方法. glib.idle_add(或旧的PyGTK版本中的gobject.idle_add)可用于此目的. 而不是写: label.set_text("foo") 你会写: g 我正在使用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未从其他线程更新全部内容,希望文章能够帮你解决python – 使用PyGtk时,GUI未从其他线程更新所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存