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