Класс 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 ()
gtk_box_pack_end ()
gtk_box_pack_start ()
Этот метод добавляет дочерний элемент в блок, упакованный со ссылкой на начало блока —
pack_start(child, expand = True, fill = True, padding = 0)
Ниже приведены параметры —
-
child — это объект виджета, который будет добавлен в поле
-
раскрыть — устанавливается в значение «Истина», если дочернему элементу нужно предоставить дополнительное пространство в поле. Дополнительное пространство делится между всеми дочерними виджетами .
-
fill — Если True, дополнительное место будет выделено дочернему элементу. В противном случае этот параметр используется в качестве отступа.
-
padding — это расстояние в пикселях между виджетами в окне.
child — это объект виджета, который будет добавлен в поле
раскрыть — устанавливается в значение «Истина», если дочернему элементу нужно предоставить дополнительное пространство в поле. Дополнительное пространство делится между всеми дочерними виджетами .
fill — Если True, дополнительное место будет выделено дочернему элементу. В противном случае этот параметр используется в качестве отступа.
padding — это расстояние в пикселях между виджетами в окне.
gtk_box_pack_end ()
Это добавляет ребенка в коробку, упакованную со ссылкой на конец коробки.
pack_end (child, expand = True, fill = True, padding = 0)
Ниже приведены параметры —
-
child — это объект виджета, который будет добавлен
-
раскрыть — устанавливается в значение «Истина», если дочернему элементу нужно предоставить дополнительное пространство в поле. Это дополнительное пространство разделено между всеми дочерними виджетами.
-
fill — Если True, дополнительное пространство будет выделено дочернему элементу, в противном случае используется как заполнение.
-
padding — это расстояние в пикселях между виджетами в окне.
child — это объект виджета, который будет добавлен
раскрыть — устанавливается в значение «Истина», если дочернему элементу нужно предоставить дополнительное пространство в поле. Это дополнительное пространство разделено между всеми дочерними виджетами.
fill — Если True, дополнительное пространство будет выделено дочернему элементу, в противном случае используется как заполнение.
padding — это расстояние в пикселях между виджетами в окне.
set_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()
Приведенный выше код выдаст следующий вывод: