Группы кнопок (gtk.HButtonBox, gtk.VButtonBox)

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)

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>