le blog de Poseidon627

Blog sur l'informatique

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
:

gtk.HBox                                                    gtk.VBox
bte_H001     bte_V001

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 :

gtk.HBox                                                    gtk.VBox
bte_H001     bte_V001

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 :

gtk.HBox                                                    gtk.VBox
bte_H002     bte_V002

En mettant le paramètre fill=True sur le bouton 2, voici ce que cela donne

bte_H003     bte_V003

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

bte_H004     bte_V004

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 :

bte_H005     bte_V005

On peut observer que les boutons sont bien placés de droite à gauche et de bas en haut

Posté par Poseidon627 à 23:36 - PyGTK - Commentaires [0] - Rétroliens [0] - Permalien [#]

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 :