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