线程中的Python GTK窗口

时间:2011-06-02 08:30:18

标签: python pygtk

我有一个CLI应用程序,它正在挖掘一些数据,如果需要,会启动一个创建带有一些信息的GTK窗口的线程。但是CLI(主线程)仍然在后台分析数据,因此可能会创建许多窗口。如果我关闭窗口,实际上会触发destroy事件,我在CLI中有一个调试行,但窗口锁定了。

我必须使用一些神奇的命令?

我在主线程中创建这样的窗口:

    gtk.gdk.threads_init()
    notifyWindow = NotifyWindow()
    notifyWindow.start()

这是NotifyWindow(Thread).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 个答案:

答案 0 :(得分:1)

使用gtk.threads_enter()并留下您的主要电话应该有帮助。

看看PyGtk Faq:PyGtk FAQ