Как в TKinter переключить в полноэкранный режим?

В принципе программа работает и размер окна при необходимости по нажатию клавиши уменьшает, при попытке из полноэкранного в оконный режим перейти всё работает, но при попытке перевести окно в фулл скрин приложение просто "не отвечает" и всё может ошибся где

import tkinter as tk

hght = 1366

wght = 768

colorW = '#ffffff'

colorB = 'black'



# def fullwindow(event):
#   fulls = "True"   
#   while(fulls != 'False') :
#     if (event.keysym == "k"):
#       okno.geometry(f'1366x768')
#       time.sleep(0.02)
#     elif(event.keysym == "l"):
#       okno.geometry(f'800x500+190+50')
#       fulls = "False"
#       time.sleep(0.02)


okno = tk.Tk()
okno.config(bg=f'{colorW}')
okno.iconbitmap('..\Рандом\графическая обработка\Иконки!!!!\dog.ico')
okno.title('Мир')
title = tk.Menu(okno, bg= '#ffffff')
okno.attributes('-fullscreen', True)
# okno.bind('k', fullwindow)
okno.mainloop()

Ответы (1 шт):

Автор решения: insolor

Проблема у вас не в полноэкранном режиме, а в том, что нельзя просто взять и использовать вечный цикл в оконных приложениях.

В tkinter и так уже есть бесконечный цикл обработки событий, добавляя еще свой цикл вы мешаете главному циклу обрабатывать события окна, в итоге окно зависает. Вместо этого вам нужно реагировать на события (нажатия клавиш, например), менять состояние программы, и сразу выходить из обработчика события, без долгих задержек (в идеале) и тем более без бесконечных циклов.

Более подробно - см. тут: Sleep и while True в tkinter

Пример как сделать переключение полноэкранного режима клавишей k:

import tkinter as tk

hght = 1366
wght = 768

colorW = '#ffffff'
colorB = 'black'


def fullwindow(event):
    if okno.attributes('-fullscreen'):  # В полноэкранном режиме?
        okno.attributes('-fullscreen', False)  # выходим из него
    else:
        # Если не в полноэкранном режиме - переходим в него
        okno.attributes('-fullscreen', True)
    
    # Можно упростить: получать текущее состояние и менять на противоположное
    # fullscreen = okno.attributes('-fullscreen')
    # okno.attributes('-fullscreen', not fullscreen)


okno = tk.Tk()
okno.config(bg=colorW)
# okno.iconbitmap('..\Рандом\графическая обработка\Иконки!!!!\dog.ico')
okno.title('Мир')
title = tk.Menu(okno, bg=colorW)
okno.geometry(f'{hght}x{wght}')
okno.attributes('-fullscreen', True)
okno.bind('k', fullwindow)
okno.mainloop()
→ Ссылка