Python Tkinter类内使用protocol绑定WM_DELETE_WINDOW禁用关闭按钮失效
问题根因
你在绑定关闭事件回调时没有加self.前缀:self.root.protocol("WM_DELETE_WINDOW", exit)里的exit会被Python优先识别为全局内置的exit()函数,而非你在GUI类中定义的exit实例方法,你写的空方法根本没有被绑定到窗口关闭事件上,点击关闭按钮还是会走默认销毁逻辑,所以看起来绑定失效。
解决方法
根据你的需求修改绑定语句即可:
- 完全禁用关闭按钮:绑定你写的空实例方法
点击关闭按钮时会触发这个空方法,不会执行任何操作,达到禁用效果。self.root.protocol("WM_DELETE_WINDOW", self.exit) - 点击关闭按钮执行自定义清理逻辑:绑定你写的
destroyWindow方法
点击关闭时会先执行日志备份、临时文件删除逻辑,再销毁窗口。self.root.protocol("WM_DELETE_WINDOW", self.destroyWindow)
内容的提问来源于stack exchange,提问作者xFlightMode
相关产品推荐
相关产品推荐

