Существует способ подключить Alt + F4 или нажать X или любым другим способом, насколько я знаю:
root.protocol("WM_DELETE_WINDOW", do_exit)
, где do_exit()
- функция обратного вызоваи root
- ваше главное окно.
Эта привязка не передает объект события.Насколько я понимаю, это должно работать для любой платформы.
Вот пример:
from tkinter import *
root = Tk()
pressed_f4 = False # Is Alt-F4 pressed?
def do_exit():
global pressed_f4
print('Trying to close application')
if pressed_f4: # Deny if Alt-F4 is pressed
print('Denied!')
pressed_f4 = False # Reset variable
else:
close() # Exit application
def alt_f4(event): # Alt-F4 is pressed
global pressed_f4
print('Alt-F4 pressed')
pressed_f4 = True
def close(*event): # Exit application
root.destroy()
root.bind('<Alt-F4>', alt_f4)
root.bind('<Escape>', close)
root.protocol("WM_DELETE_WINDOW",do_exit)
root.mainloop()
Я не уверен, что обратный вызов из root.bind('<Alt-F4>', alt_f4)
всегда будет выполняться до того, какобратный звонок от root.protocol("WM_DELETE_WINDOW",do_exit)
.Возможно, вам придется провести дополнительные исследования, чтобы установить это.