переопределить alt-f4, закрывающее окно tkinter в python 3.6, и заменить его чем-то другим - PullRequest
0 голосов
/ 18 ноября 2018

Я долго читал прошлые посты и не нашел всего, что мне нужно.

Я делаю окно типа киоска, используя tkinter. Я установил его, чтобы открыть полный экран. Я хочу переопределить стандартную команду alt-f4, чтобы закрыть ее. Я не хочу, чтобы это было совершенно неразгаданным. Вместо этого я хотел бы создать собственный ярлык клавиатуры (alt-ctrl-g-3 или что-то в этом роде).

Я попробовал некоторые предложения по переопределению alt-f4 и не смог заставить их работать. В мою init функцию я включил:

self.bind('<Alt-Key-F4>', self.ignorekey())
.
.
.
def self.ignorekey(self)
    pass

1 Ответ

0 голосов
/ 18 ноября 2018

Существует способ подключить 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).Возможно, вам придется провести дополнительные исследования, чтобы установить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...