Python GTK 窗口在线程中的实现

3
我有一个CLI应用程序,它挖掘一些数据,在需要的情况下会启动一个线程,创建带有一些信息的GTK窗口。然而,CLI(主线程)仍在后台分析数据,因此可能会创建大量窗口。如果我关闭窗口,销毁事件实际上被触发了,我在CLI中得到了一个调试行,但窗口却锁定了。
是否有一些神奇的命令可以使用?
我在主线程中像这样创建窗口:
    gtk.gdk.threads_init()
    notifyWindow = NotifyWindow()
    notifyWindow.start()

这是NotifyWindow(线程).destroy

def destroy(self, widget, data=None):
    print "destroy signal occurred"
    gtk.main_quit()

这是NotifyWindow(Thread).run方法。

def run(self):

    self.window = gtk.glade.XML( "hadinfo.glade" )

    self.window_main = self.window.get_widget("window_main")

    if (self.window_main):
        self.window_main.connect("destroy", self.destroy)
        self.window_main.connect("delete_event", self.delete_event)

    self.button_cancel = self.window.get_widget("button_cancel")
    self.button_cancel.connect("clicked", self.destroy)

    self.window.get_widget("window_main").show()

    gtk.main()
1个回答

1

在主要调用周围使用gtk.threads_enter()和leave可能会有所帮助。

请查看PyGtk FAQ:PyGtk常见问题


链接已损坏。 - ofaurax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接