2017-01-24 177 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!")