10.10. Button Boxes
Prev | Chapter 10. Container Widgets | Next

## 10.10. Button Boxes

`ButtonBoxes` are a convenient way to quickly layout a group of buttons. They come in both horizontal and vertical flavors. You create a new `ButtonBox` with one of the following calls, which create a horizontal or vertical box, respectively:

      hbutton_box = gtk.HButtonBox()

      vbutton_box = gtk.VButtonBox()

The only methods pertaining to button boxes effect how the buttons are laid out.

The layout of the buttons within the box is set using:

      button_box.set_layout(layout_style)

The `layout_style` argument can take one of the following values:

      BUTTONBOX_DEFAULT_STYLE
      BUTTONBOX_SPREAD
      BUTTONBOX_EDGE
      BUTTONBOX_START
      BUTTONBOX_END

The current `layout_style` setting can be retrieved using:

      layout_style = button_box.get_layout()

Buttons are added to a `ButtonBox` using the usual `Container` method:

      button_box.add(widget)

The buttonbox.py example program illustrates all the different layout settings for `ButtonBoxes`. The resulting display is:

The source code for the buttonbox.py program is:

        1	#!/usr/bin/env python
        2
        3	# example buttonbox.py
        4
        5	import pygtk
        6	pygtk.require('2.0')
        7	import gtk
        8
        9	class ButtonBoxExample:
       10	    # Create a Button Box with the specified parameters
       11	    def create_bbox(self, horizontal, title, spacing, layout):
       12	        frame = gtk.Frame(title)
       13
       14	        if horizontal:
       15	            bbox = gtk.HButtonBox()
       16	        else:
       17	            bbox = gtk.VButtonBox()
       18
       19	        bbox.set_border_width(5)
       20	        frame.add(bbox)
       21
       22	        # Set the appearance of the Button Box
       23	        bbox.set_layout(layout)
       24	        bbox.set_spacing(spacing)
       25
       26	        button = gtk.Button(stock=gtk.STOCK_OK)
       27	        bbox.add(button)
       28
       29	        button = gtk.Button(stock=gtk.STOCK_CANCEL)
       30	        bbox.add(button)
       31
       32	        button = gtk.Button(stock=gtk.STOCK_HELP)
       33	        bbox.add(button)
       34
       35	        return frame
       36
       37	    def __init__(self):
       38	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
       39	        window.set_title("Button Boxes")
       40
       41	        window.connect("destroy", lambda x: gtk.main_quit())
       42
       43	        window.set_border_width(10)
       44
       45	        main_vbox = gtk.VBox(False, 0)
       46	        window.add(main_vbox)
       47
       48	        frame_horz = gtk.Frame("Horizontal Button Boxes")
       49	        main_vbox.pack_start(frame_horz, True, True, 10)
       50
       51	        vbox = gtk.VBox(False, 0)
       52	        vbox.set_border_width(10)
       53	        frame_horz.add(vbox)
       54
       55	        vbox.pack_start(self.create_bbox(True, "Spread (spacing 40)",
       56	                                         40, gtk.BUTTONBOX_SPREAD),
       57	                        True, True, 0)
       58
       59	        vbox.pack_start(self.create_bbox(True, "Edge (spacing 30)",
       60	                                         30, gtk.BUTTONBOX_EDGE),
       61	                        True, True, 5)
       62
       63	        vbox.pack_start(self.create_bbox(True, "Start (spacing 20)",
       64	                                         20, gtk.BUTTONBOX_START),
       65	                        True, True, 5)
       66
       67	        vbox.pack_start(self.create_bbox(True, "End (spacing 10)",
       68	                                         10, gtk.BUTTONBOX_END),
       69	                        True, True, 5)
       70
       71	        frame_vert = gtk.Frame("Vertical Button Boxes")
       72	        main_vbox.pack_start(frame_vert, True, True, 10)
       73
       74	        hbox = gtk.HBox(False, 0)
       75	        hbox.set_border_width(10)
       76	        frame_vert.add(hbox)
       77
       78	        hbox.pack_start(self.create_bbox(False, "Spread (spacing 5)",
       79	                                         5, gtk.BUTTONBOX_SPREAD),
       80	                        True, True, 0)
       81
       82	        hbox.pack_start(self.create_bbox(False, "Edge (spacing 30)",
       83	                                         30, gtk.BUTTONBOX_EDGE),
       84	                        True, True, 5)
       85
       86	        hbox.pack_start(self.create_bbox(False, "Start (spacing 20)",
       87	                                         20, gtk.BUTTONBOX_START),
       88	                        True, True, 5)
       89
       90	        hbox.pack_start(self.create_bbox(False, "End (spacing 20)",
       91	                                         20, gtk.BUTTONBOX_END),
       92	                        True, True, 5)
       93
       94	        window.show_all()
       95
       96	def main():
       97	    # Enter the event loop
       98	    gtk.main()
       99	    return 0
      100
      101	if __name__ == "__main__":
      102	    ButtonBoxExample()
      103	    main()

Prev | Up | Next
10.9. Scrolled Windows | Home | 10.11. Toolbar