我有一个在windows和linux上运行的pygtk应用程序。主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按钮时,单词“已关闭”将打印到cmd行,但应用程序挂起并且永远不会返回对cmd行的控制,除非我通过任务管理器杀死python。如果用户从文件菜单中选择退出,应用程序将打印单词“已关闭”并将控制返回到cmd行。
在Linux上它按预期运行。 Windows上的gtk是否会保留一些东西?
答案 0 :(得分:1)
要在PyGTK中关闭应用程序,实际上需要两行代码,而不仅仅是一行代码。我的猜测是,在Linux中,窗口正在关闭,但过程不是。在Windows中,没有任何东西在关闭。
要解决此问题,只需在“gtk.main_quit()”
下面添加以下行return False
此代码的原因是,在pyGTK中,您可以利用此行创建“您确定要退出吗?”对话框。如果该行显示“返回True”,则程序根本不会关闭。