python – 使用PyGtk时,GUI未从其他线程更新
发布时间:2020-12-16 23:26:17 所属栏目:Python 来源:网络整理
导读:我正在使用PyGTK来构建GUI应用程序.我想从另一个线程更新textview小部件,但每次尝试更新时小部件都不会更新.我该怎么做才能获得可靠的GUI更新? 解决方法 GTK不是线程安全的,因此您不应该简单地从其他线程调用GUI更新方法. glib.idle_add(或旧的PyGTK版本中
我正在使用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(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |