Окна верхнего уровня

okna verhnego urovnya Экскурсия по tkinter, часть 1

Графические интерфейсы, построенные на базе tkinter, всегда имеют корневое окно, которое создается по умолчанию или явно с помощью конструктора объекта Tk. Это главное корневое окно открывается при запуске программы и обычно служит для размещения наиболее важных виджетов. Помимо этого окна сценарии, использующие библиотеку tkinter, могут порождать любое число независимых окон, которые создаются и открываются по требованию, в результате создания объектов виджетов Toplevel.

Каждый объект Toplevel порождает на экране новое окно и автоматически добавляет его в поток обработки цикла событий программы (для активации новых окон не нужно вызывать метод mainloop). В примере 8.3 создается корневое окно и два дополнительных окна.

Пример 8.3. PP4E\Gui\Tour\toplevel0.py

import sys

from tkinter import Toplevel, Button, Label

win1 = Toplevel() # два независимых окна

win2 = Toplevel() # являющихся частью одного и того же процесса

Button(win1, text=’Spam’, command=sys.exit).pack()

Button(win2, text=’SPAM’, command=sys.exit).pack()

Label(text=’Popups’).pack() # по умолчанию добавляется в корневое окно Tk() win1.mainloop()

Сценарий toplevel0 получает корневое окно по умолчанию (к которому прикрепляется метка Label, потому что для нее не указан родитель) и создает два самостоятельных окна Toplevel, которые появляются и действуют независимо от корневого окна, как показано на рис. 8.3.

Рис. 8.3. Два окна Toplevel и корневое окно

 

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

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

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

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий