2016-04-04 91 views
1

我正在开发基于数据库gtk3的程序。使用的操作系统是Linux Mint 17.3 64位和Win 7 64位。问题在Python 2.7下测试。我似乎无法控制关闭主窗口。如果有未保存的更改,我想阻止该窗口关闭。我用:Python GTK 3+控制关闭窗口

self.window.connect("delete-event", self.quit) 

“摧毁”事件似乎完全无法控制。从我所了解的“删除事件”应该是一个请求,因此是可控的。 所以后来self.quit看起来是这样的:

def quit(self, widget, something): 
    check_before_quit() 

所以后来check_before_quit()检查是否有任何未保存的更改。张贴对话框和主窗口仍然存在。如果按下OK,代码设置为启动Gtk.main_quit(),否则只是return。此时,无论按下“确定/取消”还是关闭对话框,无论如何都会关闭主窗口!同样的事情发生在Win 7和Linux下。 我有一个绑定在Ctrl + Q退出。这似乎工作正常,问,并正确退出或停留在程序中。那么按下关闭窗口按钮是否会覆盖某些内容?

回答

2

delete-event处理程序应返回TrueFalse,而不是退出本身。如果你不想关闭窗口,它应该返回True,如果你这样做,它应该返回False。这听起来有点倒退,所以我会用不同的方式说话:如果你想停止信号,它应该返回True,或者如果你不想做任何事情,它应该返回False

+0

这太容易了。非常感谢你 !!! –