Шаг 33.
Библиотека Tkinter. Компоненты и вспомогательные классы. Стилизуемые компоненты. Компонент Frame: панель

    На этом шаге мы рассмотрим назначение, основные свойства этого компонента и приведем примеры, их иллюстрирующие.

    Компонент панели, обычно использующийся в качестве контейнера и представляемый классом Frame, мы рассмотрим в самую первую очередь. Он поддерживает такой набор опций:

    Опция 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.




Предыдущий шаг Содержание Следующий шаг