Skip to main content
 首页 » 编程设计

Thread 中的 Python GTK 窗口

2025年05月04日37jyk

我有一个 CLI 应用程序,它正在挖掘一些数据,在需要时启动一个线程,该线程创建带有一些信息的 GTK 窗口。然而,CLI(主线程)仍在后台分析数据,因此可能会创建多个窗口。万一我关闭了窗口,销毁事件实际上被触发了,我在 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() 

请您参考如下方法:

使用 gtk.threads_enter() 并保留您的主调用应该会有所帮助。

查看 PyGtk 常见问题解答:PyGtk FAQ