Vous êtes à peu près ici : Accueil  »   tutoriel PyGTK  »   PyGTK : sommaire

10.3. Le conteneur Place (Fixed)

Le conteneur Place (Fixed) permet de disposer des widgets dans sa fenêtre, à une position précise, par rapport au coin supérieur gauche. Cette position peut être modifiée de manière dynamique.

Il existe seulement trois appels associés au conteneur Fixed

  conteneur_place = gtk.Fixed()

  conteneur_place.put(widget, x, y)

  conteneur_place.move(widget, x, y)

La fonction gtk.Fixed() crée un nouveau conteneur Fixed.

La méthode put() insère le widget dans le conteneur Fixed à la position indiquée par les paramètres x et y.

La méthode move() permet au widget indiqué d'être déplacé dans une nouvelle position.

Le programme fixed.py illustre l'utilisation du conteneur Fixed. La Figure 10.2, « Exemple de conteneur Fixed »montre le résultat.

Figure 10.2. Exemple de conteneur Fixed

Exemple de conteneur Fixed
Exemple de conteneur Fixed

Voici le code du programme fixed.py :

     1   #!/usr/bin/env python
     2   # -*- coding:utf-8 -*-
     3   # exemple fixed.py
     4   
     5   import pygtk
     6   pygtk.require('2.0')
     7   import gtk
     8   
     9   class ExemplePlace:
    10       # Cette méthode de rappel déplace le bouton dans
    11       # le conteneur place vers une nouvelle position
    12       def deplace_bouton(self, widget):
    13           self.x = (self.x+30)%300
    14           self.y = (self.y+50)%300
    15           self.place.move(widget, self.x, self.y) 
    16   
    17       def __init__(self):
    18           self.x = 50
    19           self.y = 50
    20   
    21           # On crée une nouvelle fenêtre
    22           fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
    23           fenetre.set_title("Conteneur Fixed")
    24   
    25           # On connecte l'évènement "destroy" au gestionnaire de signal 
    26           fenetre.connect("destroy", lambda w: gtk.main_quit())
    27    
    28           # On indique la largeur des bordures de la fenêtre
    29           fenetre.set_border_width(10)
    30   
    31           # On crée le conteneur Fixed (place)
    32           self.place = gtk.Fixed()
    33           fenetre.add(self.place)
    34           self.place.show()
    35     
    36           for i in range(1, 4):
    37               # On crée un bouton avec un label "Appuyez !"
    38               bouton = gtk.Button("Appuyez !")
    39     
    40              # Lorsque le bouton reçoit le signal "clicked", 
    41               # il appelle la méthode deplace_bouton().
    42               bouton.connect("clicked", self.deplace_bouton)
    43     
    44               # Ceci place le bouton dans la fenêtre du conteneur
    45               self.place.put(bouton, i*50, i*50)
    46     
    47               # La dernière tâche est d'afficher ce nouveau bouton.
    48               bouton.show()
    49   
    50           # On affiche la fenêtre
    51           fenetre.show()
    52   
    53   def main():
    54       # Boucle principale
    55       gtk.main()
    56       return 0
    57   
    58   if __name__ == "__main__":
    59       ExemplePlace()
    60       main()