Инструменты пользователя

Инструменты сайта


python:okonnoe_prilozhenie:tkinter:toplevel

Toplevel

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()
Окно закрыто
python/okonnoe_prilozhenie/tkinter/toplevel.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)