2011-06-02 64 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