Шаг 14.
Библиотека Tkinter. Размещение компонентов в контейнерах. Диспетчеры компоновки. Pack: выстраивание компонентов вдоль сторон контейнера

    На этом шаге мы рассмотрим назначение, его параметры и пример использования.

    Диспетчер компоновки Pack - самый простой. Он выстраивает компоненты вдоль указанных сторон контейнера: левой, верхней, правой или нижней. Если вдоль одной и той же стороны выстроено несколько компонентов, они разместятся друг за другом в направлении, соответственно, слева направо, сверху вниз, справа налево и снизу вверх.

    Одно из преимуществ этого диспетчера компоновки - нам не нужно задавать размеры контейнера. Контейнер сам примет такие размеры, чтобы вместить все свое содержимое.

    Вывод компонентов посредством диспетчера компоновки Pack выполняется вызовом метода pack([<Параметры>]), поддерживаемого всеми компонентами. Вот параметры, которые мы можем использовать в этом методе:

    Варьируя значения параметров, задаваемых в методе pack(), можно создавать приложения с довольно сложным интерфейсом. Код одного из таких приложений показан в примаере ниже.

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

import tkinter
import tkinter.ttk
class Application(tkinter.ttk.Frame):
      def __init__(self, master=None):
            super().__init__(master)
            # В вызове метода pack() самого контейнера, помещающего его
            # в окно, мы также можем указать необходимые нам параметры
            self.pack(fill="both", padx=4, pady=4)
            self.create_widgets()
            self.master.title("Pack")
            # Указываем у окна возможность изменения только ширины
            self.master.resizable(True, False)

      def create_widgets(self):
            entValue = tkinter.ttk.Entry(self)
            entValue.pack(fill="x", padx=4)
            btnShow = tkinter.ttk.Button(self, text="Вывести значение")
            btnShow.pack(fill="x", padx=4, pady=(0, 10))
            btnExit = tkinter.ttk.Button(self, text="Выход")
            btnExit.pack(side="bottom", anchor="ne")

root = tkinter.Tk()
app = Application(master=root)
root.mainloop()
Архив с файлом можно взять здесь.

    Результат работы приложения приведен на рисунке 1.


Рис.1. Результат работы приложения

    При работе с диспетчером компоновки Pack также могут пригодиться следующие методы, поддерживаемые всеми компонентами:

    На следующем шаге мы рассмотрим диспетчер компоновки Place.




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