2017-01-24 106 views
1

我正在使用Python和Tkinter构建一个GUI应用程序。 我想在用户关闭时控制程序的行为。如何使用Python tkinter绑定Alt-F4?

我已经安装使用新WM_DELETE_WINDOW协议:

root = Tk() 
root.protocol("WM_DELETE_WINDOW", lambda: closes_gracefully()) 

当用户点击标题栏上的X按钮这确实是工作,但是当用户按下ALT +不工作F4

我试着绑定键序列:root.bind("<Alt-F4>", lambda: closes_gracefully())但它没有工作。

我怎样才能捕捉到ALT + F4 事件

+0

'拉姆达:closes_gracefully()'只是'closes_gracefully',顺便说一句。 – TigerhawkT3

+1

刚刚在我的应用程序尝试过,这对我很好用:'self.bind('',self.whatever_your_want)' – CommonSense

+0

相关:http://stackoverflow.com/questions/30157521/unclosable-window-using-tkinter – TigerhawkT3

回答

1

为此,您可以使用atexit.register

它就像一个当程序关闭时执行的堆栈。每当你做register(function)时,这个函数被推到最顶端。如果你添加了a,b和c,他们会按照相反的顺序执行(c,b,a)。

在你的情况,你应该做的:

register(closes_gracefully) 

你应该注意到,这个工程几乎总是,除了与崩溃(ALT-F4的作品也一样,只是测试它)。

你甚至可以使用register作为装饰时,函数没有参数:

@register 
def bye(): 
    print("I'm out!")