PyGTK - Класс Box

Класс gtk.Box - это абстрактный класс, определяющий функциональность контейнера, в котором виджеты размещаются в прямоугольной области. Виджеты gtk.HBox и gtk.VBox являются производными от него.

Дочерние виджеты в gtk.Hbox расположены горизонтально в одной строке. С другой стороны, дочерние виджеты gtk.VBox расположены вертикально в одном столбце.

Класс gtk.Box использует следующий конструктор -

gtk.Box(homogenous = True, spacing = 0)

По умолчанию для свойства однородности установлено значение True. В результате всем дочерним виджетам предоставляется равное распределение.

gtk.Box использует механизм упаковки для размещения в нем дочерних виджетов со ссылкой на определенную позицию, либо со ссылкой на начало, либо на конец. Метод pack_start () размещает виджеты от начала до конца. Напротив, метод pack_end () помещает виджеты от начала до конца. В качестве альтернативы вы можете использовать метод add (), аналогичный pack_start ().

Для gtk.HBox, а также для gtk.VBox доступны следующие методы:

  • gtk_box_pack_start ()

  • gtk_box_pack_end ()

gtk_box_pack_start ()

Этот метод добавляет child в коробку, упакованную со ссылкой на начало коробки -

pack_start(child, expand = True, fill = True, padding = 0)

Ниже приведены параметры -

  • child - Это объект виджета, который нужно добавить в бокс

  • expand- Для этого параметра установлено значение True, если дочернему элементу нужно предоставить дополнительное место в поле. Дополнительное пространство делится между всеми детьмиwidgets.

  • fill- Если True, дополнительное место будет выделено для ребенка. В противном случае этот параметр используется как заполнитель.

  • padding - Это расстояние в пикселях между виджетами в поле.

gtk_box_pack_end ()

Это добавляет ребенка в коробку, упакованную со ссылкой на конец коробки.

pack_end (child, expand = True, fill = True, padding = 0)

Ниже приведены параметры -

  • child - Это добавляемый объект виджета

  • expand- Для этого параметра установлено значение True, если дочернему элементу нужно предоставить дополнительное место в поле. Это дополнительное пространство делится между всеми дочерними виджетами.

  • fill - Если True, дочернему элементу будет выделено дополнительное пространство, которое в противном случае будет использоваться в качестве заполнения.

  • padding - Это расстояние в пикселях между виджетами в поле.

set_spacing (spacing) - это функция, которая устанавливает количество пикселей между дочерними элементами блока.

Метод add (widget)унаследован от класса gtk.Container. Добавляет виджет в контейнер. Этот метод можно использовать вместо метода pack_start ().

пример

В приведенном ниже примере окно верхнего уровня содержит вертикальный блок (блок объекта gtk.VBox). Он, в свою очередь, имеет объект VBox vb и объект HBox hb. В верхнем поле вертикально расположены метка, виджет ввода и кнопка. В нижнем поле еще один набор меток, записи и кнопки размещается вертикально.

Обратите внимание на следующий код -

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
         self.set_title("Box demo")
		
      box = gtk.VBox()
      vb = gtk.VBox()
      lbl = gtk.Label("Enter name")
		
      vb.pack_start(lbl, expand = True, fill = True, padding = 10)
      text = gtk.Entry()
		
      vb.pack_start(text, expand = True, fill = True, padding = 10)
      btn = gtk.Button(stock = gtk.STOCK_OK)
		
      vb.pack_start(btn, expand = True, fill = True, padding = 10)
      hb = gtk.HBox()
		
      lbl1 = gtk.Label("Enter marks")
      hb.pack_start(lbl1, expand = True, fill = True, padding = 5)
      text1 = gtk.Entry()
		
      hb.pack_start(text1, expand = True, fill = True, padding = 5)
      btn1 = gtk.Button(stock = gtk.STOCK_SAVE)
		
      hb.pack_start(btn1, expand = True, fill = True, padding = 5)
      box.add(vb)
      box.add(hb)
      self.add(box)
      self.show_all()
PyApp()
gtk.main()

Приведенный выше код даст следующий результат -