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() |