Как в 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 шт):
Проблема у вас не в полноэкранном режиме, а в том, что нельзя просто взять и использовать вечный цикл в оконных приложениях.
В 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()