На этом уроке продолжим рассматривать графические объекты (виджеты), содержащихся в библиотеке Tkinter. Это будут рамка (frame), шкала (scale), полоса прокрутки (scrollbar), окно верхнего уровня (toplevel).
Как выяснится позже, рамки (фреймы) хороший инструмент для организации остальных виджет в группы внутри окна, а также оформления.
from tkinter import * root = Tk() fra1 = Frame(root,width=500,height=100,bg="darkred") fra2 = Frame(root,width=300,height=200,bg="green",bd=20) fra3 = Frame(root,width=500,height=150,bg="darkblue") fra1.pack() fra2.pack() fra3.pack() root.mainloop()
Данный скрипт создает три фрейма разного размера. Свойство bd (сокращение от boderwidth) определяет расстояния от края рамки до заключенных в нее виджетов (если они есть).
На фреймах также можно размещать виджеты как на основном окне (root). Здесь текстовое поле находится на рамке fra2.
ent1 = Entry(fra2,width=20) ent1.pack()
Назначение шкалы — это предоставление пользователю выбора какого-то значения из определенного диапазона. Внешне шкала представляет собой горизонтальную или вертикальную полосу с разметкой, по которой пользователь может передвигать движок, осуществляя тем самым выбор значения.
sca1 = Scale(fra3,orient=HORIZONTAL,length=300, from_=0,to=100,tickinterval=10,resolution=5) sca2 = Scale(root,orient=VERTICAL,length=400, from_=1,to=2,tickinterval=0.1,resolution=0.1)
Свойства:
Данный виджет позволяет прокручивать содержимое другого виджета (например, текстового поля или списка). Прокрутка может быть как по горизонтали, так и по вертикали.
from tkinter import * root = Tk() tx = Text(root,width=40,height=3,font='14') scr = Scrollbar(root,command=tx.yview) tx.configure(yscrollcommand=scr.set) tx.grid(row=0,column=0) scr.grid(row=0,column=1) root.mainloop()
В примере сначала создается текстовое поле (tx), затем полоса прокрутки (scr), которая привязывается с помощью опции command к полю tx по вертикальной оси (yview). Далее поле tx изменяется (конфигурируется) с помощью метода configure: устанавливается значение опции yscrollcommand.
Здесь используется незнакомый нам пока еще метод grid, представляющий собой другой способ расположения виджет на окне.
С помощью класс Toplevel создаются дочерние окна, на которых также могут располагаться виджеты. Следует отметить, что при закрытии главного окна (или родительского), окно Toplevel также закрывается. С другой стороны, закрытие дочернего окна не приводит к закрытию главного.
win = Toplevel(root,relief=SUNKEN,bd=10,bg="lightblue") win.title("Дочернее окно") win.minsize(width=400,height=200)
Метод title определяет заголовок окна. Метод minsize конфигурирует минимальный размер окна (есть метод maxsize, определяющий максимальный размер окна). Если значение аргументов minsize будет таким же как у maxsize, то пользователь не сможет менять размеры окна.
1. Создайте два скрипта на языке программирования Python и с использованием модуля Tkinter генерирующие шаблоны представленные ниже.


2. Создайте приложение, состоящее из главного и двух дочерних окон. На каждом из трех окон должны располагаться один или два любых графических объекта.