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(gtk.FALSE, 0)
46 window.add(main_vbox)
47
48 frame_horz = gtk.Frame("Horizontal Button Boxes")
49 main_vbox.pack_start(frame_horz, gtk.TRUE, gtk.TRUE, 10)
50
51 vbox = gtk.VBox(gtk.FALSE, 0)
52 vbox.set_border_width(10)
53 frame_horz.add(vbox)
54
55 vbox.pack_start(self.create_bbox(gtk.TRUE, "Spread (spacing 40)",
56 40, gtk.BUTTONBOX_SPREAD),
57 gtk.TRUE, gtk.TRUE, 0)
58
59 vbox.pack_start(self.create_bbox(gtk.TRUE, "Edge (spacing 30)",
60 30, gtk.BUTTONBOX_EDGE),
61 gtk.TRUE, gtk.TRUE, 5)
62
63 vbox.pack_start(self.create_bbox(gtk.TRUE, "Start (spacing 20)",
64 20, gtk.BUTTONBOX_START),
65 gtk.TRUE, gtk.TRUE, 5)
66
67 vbox.pack_start(self.create_bbox(gtk.TRUE, "End (spacing 10)",
68 10, gtk.BUTTONBOX_END),
69 gtk.TRUE, gtk.TRUE, 5)
70
71 frame_vert = gtk.Frame("Vertical Button Boxes")
72 main_vbox.pack_start(frame_vert, gtk.TRUE, gtk.TRUE, 10)
73
74 hbox = gtk.HBox(gtk.FALSE, 0)
75 hbox.set_border_width(10)
76 frame_vert.add(hbox)
77
78 hbox.pack_start(self.create_bbox(gtk.FALSE, "Spread (spacing 5)",
79 5, gtk.BUTTONBOX_SPREAD),
80 gtk.TRUE, gtk.TRUE, 0)
81
82 hbox.pack_start(self.create_bbox(gtk.FALSE, "Edge (spacing 30)",
83 30, gtk.BUTTONBOX_EDGE),
84 gtk.TRUE, gtk.TRUE, 5)
85
86 hbox.pack_start(self.create_bbox(gtk.FALSE, "Start (spacing 20)",
87 20, gtk.BUTTONBOX_START),
88 gtk.TRUE, gtk.TRUE, 5)
89
90 hbox.pack_start(self.create_bbox(gtk.FALSE, "End (spacing 20)",
91 20, gtk.BUTTONBOX_END),
92 gtk.TRUE, gtk.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()
|