ButtonBox это удобный способ быстро разместить группу кнопок. Виджет представлен в двух вариантах. Создавая ButtonBox одним из следующих вызовов, мы получаем горизонтальный или вертикальный соответственно:
hbutton_box = gtk.HButtonBox() vbutton_box = gtk.VButtonBox() |
У виджета ButtonBox есть только методы отвечающие за расположение кнопок.
Компоновка кнопок устанавливается использованием:
button_box.set_layout(layout_style) |
Аргумент layout_style может принимать одно из следующих значений:
BUTTONBOX_DEFAULT_STYLE BUTTONBOX_SPREAD BUTTONBOX_EDGE BUTTONBOX_START BUTTONBOX_END |
Текущий layout_style может быть получен с помощью:
layout_style = button_box.get_layout() |
Для добавления кнопок на ButtonBox используется обычный для контейнеров метод:
button_box.add(widget) |
Пример buttonbox.py показывает все варианты компоновки в ButtonBox:
Исходный код для buttonbox.py:
#!/usr/bin/env python # -*- coding: utf-8 -*- # пример buttonbox.py import pygtk pygtk.require('2.0') import gtk class ButtonBoxExample: # Создаём Button Box с определёнными параметрами def create_bbox(self, horizontal, title, spacing, layout): frame = gtk.Frame(title) if horizontal: bbox = gtk.HButtonBox() else: bbox = gtk.VButtonBox() bbox.set_border_width(5) frame.add(bbox) # Устанавливаем внешний вид ButtonBox bbox.set_layout(layout) bbox.set_spacing(spacing) button = gtk.Button(stock=gtk.STOCK_OK) bbox.add(button) button = gtk.Button(stock=gtk.STOCK_CANCEL) bbox.add(button) button = gtk.Button(stock=gtk.STOCK_HELP) bbox.add(button) return frame def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Группы кнопок") window.connect("destroy", lambda x: gtk.main_quit()) window.set_border_width(10) main_vbox = gtk.VBox(False, 0) window.add(main_vbox) frame_horz = gtk.Frame("Горизонтальные группы") main_vbox.pack_start(frame_horz, True, True, 10) vbox = gtk.VBox(False, 0) vbox.set_border_width(10) frame_horz.add(vbox) vbox.pack_start(self.create_bbox(True, "Spread (spacing 40)", 40, gtk.BUTTONBOX_SPREAD), True, True, 0) vbox.pack_start(self.create_bbox(True, "Edge (spacing 30)", 30, gtk.BUTTONBOX_EDGE), True, True, 5) vbox.pack_start(self.create_bbox(True, "Start (spacing 20)", 20, gtk.BUTTONBOX_START), True, True, 5) vbox.pack_start(self.create_bbox(True, "End (spacing 10)", 10, gtk.BUTTONBOX_END), True, True, 5) frame_vert = gtk.Frame("Вертикальные группы") main_vbox.pack_start(frame_vert, True, True, 10) hbox = gtk.HBox(False, 0) hbox.set_border_width(10) frame_vert.add(hbox) hbox.pack_start(self.create_bbox(False, "Spread (spacing 5)", 5, gtk.BUTTONBOX_SPREAD), True, True, 0) hbox.pack_start(self.create_bbox(False, "Edge (spacing 30)", 30, gtk.BUTTONBOX_EDGE), True, True, 5) hbox.pack_start(self.create_bbox(False, "Start (spacing 20)", 20, gtk.BUTTONBOX_START), True, True, 5) hbox.pack_start(self.create_bbox(False, "End (spacing 20)", 20, gtk.BUTTONBOX_END), True, True, 5) window.show_all() def main(): # Вход в цикл событий gtk.main() return 0 if __name__ == "__main__": ButtonBoxExample() main()
Предыдущая страница | На уровень выше | Следующая страница |
10.9. Окно прокрутки (gtk.ScrolledWindow) | Оглавление | 10.11. Панель инструментов (gtk.Toolbar) |