La boîte à boutons ButtonBox est un moyen
simple de réaliser rapidement un groupe de boutons. Elle peut être
horizontale ou verticale. On crée une nouvelle boîte à boutons par un
des appels suivants, respectivement pour une boîte horizontale ou verticale :
hboite_bout = gtk.HButtonBox() vboite_bout = gtk.VButtonBox()
Les seules méthodes s'appliquant aux boîtes à boutons concernent leur disposition à l'intérieur de la boîte.
La disposition des boutons dans leur boîte se fait par :
boite_bout.set_layout(layout_style)
Le paramètre layout_style peut
prendre une des valeurs suivantes :
BUTTONBOX_DEFAULT_STYLE # par défaut BUTTONBOX_SPREAD # espacé BUTTONBOX_EDGE # collé aux bords BUTTONBOX_START # collé au début BUTTONBOX_END # collé à la fin
Le style d'affichage layout_style
peut être retrouvé en utilisant :
layout_style = boite_bout.get_layout()
Les boutons sont sjoutés dans la ButtonBox
en utilisant la méthode habituelle des Container :
boite_bout.add(widget)
Le programmme exemple
buttonbox.py utilise tous les
différents modes de placement des ButtonBoxes.
En voici le résultat :
Voici le code source du programme buttonbox.py :
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # example boutonbox.py
4
5 import pygtk
6 pygtk.require('2.0')
7 import gtk
8
9 class ExempleBoiteBouton:
10 # Créer une boîte à boutons avec les paramètres indiqués
11 def create_boite_bout(self, horizontal, title, spacing, layout):
12 cadre = gtk.Frame(title)
13
14 if horizontal:
15 boite_bout = gtk.HButtonBox()
16 else:
17 boite_bout = gtk.VButtonBox()
18
19 boite_bout.set_border_width(5)
20 cadre.add(boite_bout)
21
22 # Définir l'apparence de la boîte à bouton
23 boite_bout.set_layout(layout)
24 boite_bout.set_spacing(spacing)
25
26 bouton = gtk.Button(stock=gtk.STOCK_OK)
27 boite_bout.add(bouton)
28
29 bouton = gtk.Button(stock=gtk.STOCK_CANCEL)
30 boite_bout.add(bouton)
31
32 bouton = gtk.Button(stock=gtk.STOCK_HELP)
33 boite_bout.add(bouton)
34
35 return cadre
36
37 def __init__(self):
38 fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
39 fenetre.set_title("Boîtes à boutons")
40
41 fenetre.connect("destroy", lambda x: gtk.main_quit())
42
43 fenetre.set_border_width(10)
44
45 boîtev_princ = gtk.VBox(False, 0)
46 fenetre.add(boîtev_princ)
47
48 cadre_horz = gtk.Frame("Boîtes à boutons horizontales")
49 boîtev_princ.pack_start(cadre_horz, True, True, 10)
50
51 boîtev = gtk.VBox(False, 0)
52 boîtev.set_border_width(10)
53 cadre_horz.add(boîtev)
54
55 boîtev.pack_start(self.create_boite_bout(True, "Spread (spacing 40)",
56 40, gtk.BUTTONBOX_SPREAD),
57 True, True, 0)
58
59 boîtev.pack_start(self.create_boite_bout(True, "Edge (spacing 30)",
60 30, gtk.BUTTONBOX_EDGE),
61 True, True, 5)
62
63 boîtev.pack_start(self.create_boite_bout(True, "Start (spacing 20)",
64 20, gtk.BUTTONBOX_START),
65 True, True, 5)
66
67 boîtev.pack_start(self.create_boite_bout(True, "End (spacing 10)",
68 10, gtk.BUTTONBOX_END),
69 True, True, 5)
70
71 cadre_vert = gtk.Frame("Boîtes à boutons verticales")
72 boîtev_princ.pack_start(cadre_vert, True, True, 10)
73
74 boîteh = gtk.HBox(False, 0)
75 boîteh.set_border_width(10)
76 cadre_vert.add(boîteh)
77
78 boîteh.pack_start(self.create_boite_bout(False, "Spread (spacing 5)",
79 5, gtk.BUTTONBOX_SPREAD),
80 True, True, 0)
81
82 boîteh.pack_start(self.create_boite_bout(False, "Edge (spacing 30)",
83 30, gtk.BUTTONBOX_EDGE),
84 True, True, 5)
85
86 boîteh.pack_start(self.create_boite_bout(False, "Start (spacing 20)",
87 20, gtk.BUTTONBOX_START),
88 True, True, 5)
89
90 boîteh.pack_start(self.create_boite_bout(False, "End (spacing 20)",
91 20, gtk.BUTTONBOX_END),
92 True, True, 5)
93
94 fenetre.show_all()
95
96 def main():
97 # Entrer dans la boucle principale
98 gtk.main()
99 return 0
100
101 if __name__ == "__main__":
102 ExempleBoiteBouton()
103 main()