Приложения, которые поддерживают macOS, правильно открываются на отдельной вкладке «Рабочий стол» при использовании в полноэкранном режиме. Насколько я заметил, это не относится к tkinter, окно расширяется, чтобы полностью соответствовать размеру экрана на главной вкладке рабочего стола.
Почему в полноэкранном режиме происходит смещение?
Смещение имеет заголовок , который скрывается в полноэкранном режиме, но не регистрируется и соответственно перемещает все виджеты. Вот почему щелчки мыши регистрируются + 24 (высота заголовка) от клика. Чтобы избежать этого, мы используем root.attributes('-fullscreen', 1)
.
Для выхода из полноэкранного режима мы можем использовать <Escape>
bind , поскольку клавиша Escape в большинстве приложений предназначена для выхода из полноэкранного режима, как в Safari . Вы также можете использовать Button
.
root.bind('<Escape>', lambda e: root.attributes('-fullscreen', 0))
Мне не удалось найти обработчик событий для полноэкранного режима на Mac, поэтому я использовал <Configure>
с условием root.attributes('-fullscreen')
, чтобы проверить, нажал ли пользователь на полноэкранный режим или нет.
Это то, что я придумал.
from tkinter import *
root = Tk()
Button(root, width=20, text='Hello').pack()
def full_screen(evt=None):
# checks if the window is in fullscreen
if root.attributes('-fullscreen'):
root.attributes('-fullscreen',1)
# Remove the borders and titlebar
root.overrideredirect(True)
root.overrideredirect(False)
root.bind('<Configure>', full_screen)
# Escape bind to exit fullscreen.
root.bind('<Escape>', lambda e: root.attributes('-fullscreen', 0))
root.mainloop()