PyGTK - Контейнеры
Библиотека PyGTK предоставляет различные классы контейнеров для управления размещением виджетов внутри окна. Самый простой способ - использоватьfixed container class и поместите в него виджет, указав его абсолютные координаты в пикселях.
Давайте теперь выполним следующие шаги -
Step 1 - Объявить объект fixed class
fixed = gtk.Fixed()
Step 2 - Создайте виджет кнопки и добавьте его в фиксированный контейнер с помощью put()метод, которому нужны координаты x и y. Здесь кнопка будет размещена в позиции (100,100).
btn = gtk.Button("Hello")
fixed.put(btn, 100,100)
Step 3- Вы можете разместить несколько элементов управления в фиксированном контейнере. И добавьте его в окно верхнего уровня и вызовитеshow_all() метод
self.add(fixed)
self.show_all()
Однако этот абсолютный макет не подходит по следующим причинам:
- Положение виджета не меняется даже при изменении размера окна.
- Внешний вид может быть неодинаковым на разных устройствах отображения с разным разрешением.
- Внесение изменений в макет затруднено, так как может потребоваться переработка всей формы.
Ниже приводится original window -
Ниже приводится resized window -
Положение кнопки здесь не изменилось.
PyGTK API предоставляет классы контейнеров для расширенного управления позиционированием виджетов внутри контейнера. Преимущества менеджеров компоновки перед абсолютным позиционированием:
- Размер виджетов внутри окна изменяется автоматически.
- Обеспечивает единообразный внешний вид на устройствах отображения с разным разрешением.
- Динамическое добавление или удаление виджета возможно без изменения дизайна.
gtk.Container действует как базовый класс для следующих классов:
- gtk.ButtonBox
- gtk.Box
- gtk.Alignment
- gtk.EventBox
- gtk.Table