13 avril 2008
PyGTK : Les boites
Afin de pouvoir placer plusieurs widgets dans un conteneur, il faut utiliser les méthodes :
gtk.HBox(homogeneous, spacing)
Crée une boite où les widgets seront placés horizontalement
gtk.VBox(homogeneous, spacing)
Crée une boite où les widgets seront placés verticalement
Les paramètres :
homogeneous Si cette valeur est à True, tous les widgets occuperont un espace équivalent
spacing Permet de définir l'espacement entre chacun des widgets
Par défaut, ces paramètres sont à homogeneous=False et spacing=0
Comment ajouter des widgets dans la boite ?
Nous avons besoin ici, des deux méthodes suivantes :
box.pack_start(child, expand, fill, padding)
ajoute les widgets de gauche à droite (HBox) ou de haut en bas (VBox)
box.pack_end(child, expand, fill, padding)
ajoute les widgets de droite à gauche ou de bas en haut
Les paramètres :
child Widget ajouté à la boite
expand Ce paramètre ne peut être actif que lorsque Homogeneous=False.
Un widget dont expand=False occupera seulement l'espace nécessaire
A l'inverse, des widgets dont expand=True occuperont des espaces équivalents
fill Indique si le widget occupera tout l'espace qui lui est réservé
padding Pour ajouter de l'espace autour du widget
Les paramètres par défaut sont expand=True, fill=True, padding=0
Code général :
#!/usr/bin/env python
# -*- Encoding: Latin-1 -*-
import pygtk
pygtk.require('2.0')
import gtk
def fenetre():
fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
fenetre.set_default_size(400, 200)
fenetre.set_title("Ma premiere fenetre")
..........
"""Code à ajouter"""
..........
fenetre.show_all()
gtk.main()
if __name__ == '__main__':
fenetre()
Boite avec homogeneous=True :
..........
verti2 = gtk.HBox(homogeneous=True)
bouton1 = gtk.Button("Btn 1")
bouton2 = gtk.Button("Btn 2")
verti2.pack_start(bouton1)
verti2.pack_start(bouton2)
..........
Résultat :
On observe bien ici que les widgets occupent un espace équivalent
Boite avec homogeneous=False et expand=True :
..........
verti2 = gtk.HBox(homogeneous=False)
bouton1 = gtk.Button("Btn 1")
bouton2 = gtk.Button("Btn 2")
verti2.pack_start(bouton1, True)
verti2.pack_start(bouton2, True)
..........
Résultat :
On observe ici le même résultat qu'avec homogeneous=True
Boite avec homogeneous=False et expand alternant True et False :
..........
verti2 = gtk.VBox(homogeneous=False)
bouton1 = gtk.Button("Btn 1")
bouton2 = gtk.Button("Btn 2")
bouton3 = gtk.Button("Btn 3")
bouton4 = gtk.Button("Btn 4")
verti2.pack_start(bouton1, False)
verti2.pack_start(bouton2, True)
verti2.pack_start(bouton3, False)
verti2.pack_start(bouton4, True)
fenetre.add(verti2)
..........
Résultat :
En mettant le paramètre fill=True sur le bouton 2, voici ce que cela donne
On peut observer que le bouton deux n'occupe pas tout l'espace qui lui a été réservé
En mettant maintenant, un padding=15 sur le bouton 4, voici ce que l'on obtient

Enfin, utilisons pack_end(...)
Code :
verti2 = gtk.VBox(homogeneous=False)
bouton1 = gtk.Button("Btn 1")
bouton2 = gtk.Button("Btn 2")
bouton3 = gtk.Button("Btn 3")
bouton4 = gtk.Button("Btn 4")
verti2.pack_end(bouton1, False)
verti2.pack_end(bouton2, True, False)
verti2.pack_end(bouton3, False)
verti2.pack_end(bouton4, True, True, 15)
fenetre.add(verti2)
Résultat :
On peut observer que les boutons sont bien placés de droite à gauche et de bas en haut
Commentaires
Poster un commentaire
Rétroliens
URL pour faire un rétrolien vers ce message :
http://www.canalblog.com/cf/fe/tb/?bid=287253&pid=8806896
Liens vers des weblogs qui référencent ce message :













