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()
Приведенный выше код даст следующий результат -