我有一个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",程序根本不会关闭。