pygtk应用程序不会通过win32上的删除事件退出

时间:2011-07-09 21:17:14

标签: windows pygtk

我有一个在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是否会保留一些东西?

1 个答案:

答案 0 :(得分:1)

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

要解决此问题,只需在“gtk.main_quit()”

下面添加以下行
return False

此代码的原因是,在pyGTK中,您可以利用此行创建“您确定要退出吗?”对话框。如果该行显示“返回True”,则程序根本不会关闭。