Pygtk应用程序不会在win32上通过delete事件退出



我有一个pygtk应用程序在windows和linux上运行。主GUI具有关闭函数,该函数可从删除事件(当用户单击窗口上的X按钮时)或通过FILE->QUIT

从菜单中调用。

代码如下所示

def close_down(self):
    self.hide_gui()
    #do some cleanup stuff here, close down a log file etc...
    gtk.main_quit()
def on_close_down_activate(self, widget):  # From menu
    self.close_down()
    print("Closed")
def on_main_gui_delete_event(self, window, event): # From window X button
    self.close_down()
    print("Closed")

但是当用户单击窗口上的X按钮时,"Closed"一词被打印到cmd行,但是应用程序挂起并且永远不会返回cmd行控制权,除非我通过任务管理器杀死python。如果用户从文件菜单中选择退出,则应用程序打印单词"Closed"并将控制返回到cmd行。

在Linux上,它按预期工作。gtk在windows上运行吗?

要关闭PyGTK中的应用程序,实际上需要两行代码,而不仅仅是一行。我的猜测是,在Linux中,窗口正在关闭,但进程没有关闭。在Windows中,没有任何东西正在关闭。

要解决这个问题,只需在"gtk.main_quit()"下面添加以下行"

return False
这段代码的原因是,在pyGTK中,您可以利用这一行来创建"您确定要退出吗?"对话框。如果该行的读数为"return True",程序根本不会关闭。

最新更新