2011-06-02 38 views
2

我有一个CLI应用程序,在需要的情况下挖掘一些数据,启动一个线程,该线程创建带有一些信息的GTK窗口。然而,CLI(主线程)仍然在后台分析数据,因此可能会创建大量窗口。在我关闭窗口的情况下,销毁事件实际上是启动的,我在CLI中有一个调试行,但窗口锁定。线程中的Python GTK窗口

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

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

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

这是NotifyWindow(线程).destroy

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

这是NotifyWindow(线程).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

使用gtk.threads_enter()离开你的主要电话应该有所帮助。

看看PyGtk Faq:PyGtk FAQ