我正在使用Python和Tkinter构建GUI应用程序。 我希望在用户关闭程序时控制程序的行为。
我使用以下方法安装了新的WM_DELETE_WINDOW
协议:
root = Tk()
root.protocol("WM_DELETE_WINDOW", lambda: closes_gracefully())
当用户点击标题栏上的X
按钮时,这确实有效,但当用户按下 ALT + F4 时,它无效。< / p>
我尝试绑定密钥序列:root.bind("<Alt-F4>", lambda: closes_gracefully())
但它没有用。
如何捕获 ALT + F4 事件?
答案 0 :(得分:2)
为此,您可以使用atexit.register
。
它的工作方式类似于程序关闭时执行的堆栈。每次执行register(function)
时,此功能都会被推到最前面。如果你添加了a,b和c,它们会以相反的顺序执行(c,b,a)。
在你的情况下,你应该这样做:
register(closes_gracefully)
你应该注意到这几乎总是有效,除了崩溃(alt-f4也可以,只是测试它)。
当函数不带参数时,你甚至可以使用register
作为装饰器:
@register
def bye():
print("I'm out!")