На этом шаге мы рассмотрим назначение, основные свойства этого компонента и приведем примеры, их иллюстрирующие.
Компонент панели, обычно использующийся в качестве контейнера и представляемый классом Frame, мы рассмотрим в самую первую очередь. Он поддерживает такой набор опций:
frm = tkinter.ttk.Frame(self, relief=tkinter.RIDGE, borderwidth=3)
Опция background, указывающая цвет фона панели, задается только через стиль.
Приведем примеры использования некоторых из перечисленных опций.
Вот приложение, которое помещает пять рамок в окно, где каждая из которых имеет свое значение аргумента relief (пример взят отсюда: https://python-scripts.com/tkinter):
import tkinter as tk border_effects = { "flat": tk.FLAT, "sunken": tk.SUNKEN, "raised": tk.RAISED, "groove": tk.GROOVE, "ridge": tk.RIDGE, } window = tk.Tk() for relief_name, relief in border_effects.items(): frame = tk.Frame(master=window, relief=relief, borderwidth=5) frame.pack(side=tk.LEFT) label = tk.Label(master=frame, text=relief_name) label.pack() window.mainloop()
Результат работы приложения изображен на рисунке 1.
Рис.1. Пять рамок с различным рельефом
Дадим краткие комментарии по приведенной программе.
border_effects - это словарь, ключами которого являются названия различных эффектов от relief, доступных в Tkinter. Значения являются соответствующими объектами Tkinter. После создания главного окна приложения window запускаетcz цикл for для каждого элемента в словаре border_effects. Далее создается новый компонент (виджет) Frame, который своим родителем будет иметь объект window. Опция relief установлена в значение соответствующего элемента рельефа в словаре border_effects, а опция border имеет значение в 5 пикселей, чтобы эффект был видимым.
Затем виджет (компонент) рамки помещается в окно с помощью метода pack(). Опция side указывает Tkinter, где поместить поместить рамку.
Затем создается виджет (компонент) надписи (Label) названия рельефа и помещается в только что созданную рамку.
Приведем еще один пример использования компонента (виджета) Frame: нарисуем российский флаг (пример взят отсюда: http://www.239.ru/sites/default/files/userdata/konspekt12._modul_tkinter_chast2.pdf):.
Вот текст программы.
from tkinter import * root = Tk() root.title('Главное окно') root.minsize(width=400, height=400) # Отступ от верха окна frame = Frame(root, width=400, height=100) frame2 = Frame(root, width=200, height=50, bg='white') frame3 = Frame(root, width=200, height=50, bg='blue') frame4 = Frame(root, width=200, height=50, bg='red') frame.pack() frame2.pack() frame3.pack() frame4.pack() root.mainloop()
Результат работы приложения изображен на рисунке 2.
Рис.2. Результат работы приложения
Текст программы достаточно прост и, на наш взгляд, в комментариях не нуждается.
На следующем шаге мы рассмотрим виджет Button.