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