===== Toplevel ===== Toplevel[[https://ru.wikiversity.org/wiki/Курс_по_библиотеке_Tkinter_языка_Python#cite_note-5|[5]]] - окно верхнего уровня. Обычно используется для создания многооконных программ, а также для диалоговых окон. Методы виджета * **title** - заголовок окна * **overrideredirect** - указание оконному менеджеру игнорировать это окно. Аргументом является True или False. В случае, если аргумент не указан - получаем текущее значение. Если аргумент равен True, то такое окно будет показано оконным менеджером без обрамления (без заголовка и бордюра). Может быть использовано, например, для создания splashscreen при старте программы. * **iconify / deiconify** - свернуть / развернуть окно * **withdraw** - "спрятать" (сделать невидимым) окно. Для того, чтобы снова показать его, надо использовать метод //deiconify//. * **minsize** и **maxsize** - минимальный / максимальный размер окна. Методы принимают два аргумента - ширина и высота окна. Если аргументы не указаны - возвращают текущее значение. * **state** - получить текущее значение состояния окна. Может возвращать следующие значения: normal (нормальное состояние), icon (показано в виде иконки), iconic (свёрнуто), withdrawn (не показано), zoomed (развёрнуто на полный экран, только для Windows и Mac OS X) * **resizable** - может ли пользователь изменять размер окна. Принимает два аргумента - возможность изменения размера по горизонтали и по вертикали. Без аргументов возвращает текущее значение. * **geometry** - устанавливает геометрию окна в формате ширинаxвысота+x+y (пример: geometry("600x400+40+80") - поместить окно в точку с координатам 40,80 и установить размер в 600×400). Размер или координаты могут быть опущены (geometry("600x400") - только изменить размер, geometry("+40+80") - только переместить окно). * **transient** - сделать окно зависимым от другого окна, указанного в аргументе. Будет сворачиваться вместе с указанным окном. Без аргументов возвращает текущее значение. * **protocol** - получает два аргумента: название события и функцию, которая будет вызываться при наступлении указанного события. События могут называться WM_TAKE_FOCUS (получение фокуса), WM_SAVE_YOURSELF (необходимо сохраниться, в настоящий момент является устаревшим), WM_DELETE_WINDOW (удаление окна). * **tkraise** (синоним lift) и **lower** - поднимает (размещает поверх всех других окон) или опускает окно. Методы могут принимать один необязательный аргумент: над/под каким окном разместить текущее. * **grab_set** - устанавливает фокус на окно, даже при наличии открытых других окон * **grab_release** - снимает монопольное владение фокусом ввода с окна Эти же методы могут быть использованы для корневого (root) окна. ====Примеры==== from tkinter import * def setGeometry(win, winx, winy):#Функция выравнивает окно по центру x = (root.winfo_screenwidth() / 2 - winx / 2) y = (root.winfo_screenheight() / 2 - winy / 2) win.geometry("%dx%d+%d+%d" % (winx, winy, x, y)) def open_win(): win = Toplevel() setGeometry(win, 200, 100) #Растянуть на все окно l = Label(win, text="Hello from top level", bg="#000000", fg="#fff").pack(expand=1, fill=BOTH) win.overrideredirect(1)#Убрать рамку win.grab_set() #Закрыть доступ родительскому окну win.after(3000, lambda: win.destroy())#Окно закроется через три секунды root = Tk() setGeometry(root, 400, 300) Button(root, text="Open", command=open_win, padx=20, pady=5).place(relx=0.5, rely=0.5, anchor=CENTER) root.mainloop() {{ :python:оконное_приложение:tkinter:toplevel1.png?300 |}} from tkinter import * def window_deleted(): print('Окно закрыто') root.quit() # явное указание на выход из программы root=Tk() root.title(u'Пример приложения') root.geometry('500x400+300+200') # ширина=500, высота=400, x=300, y=200 root.protocol('WM_DELETE_WINDOW', window_deleted) # обработчик закрытия окна root.resizable(True, False) # размер окна может быть изменён только по горизонтали root.mainloop() Окно закрыто