Toplevel[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(«600×400+40+80») - поместить окно в точку с координатам 40,80 и установить размер в 600×400). Размер или координаты могут быть опущены (geometry(«600×400») - только изменить размер, 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()
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()
Окно закрыто