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

9.2. Les flèches

Le widget gtk.Arrow consiste en une tête de flèche pouvant pointer dans différentes directions et à laquelle on peut appliquer un certain nombre de styles. Dans beaucoup d'applications, ce widget se révèlera très utile une fois placé à l'intérieur d'un bouton. A l'instar des étiquettes, il n'émet pas de signaux.

Pour manipuler les flèches, il n'y a que deux appels :

  fleche = gtk.Arrow(arrow_type, shadow_type)

  fleche.set(arrow_type, shadow_type)

Le premier crée une flèche, en prenant en compte le type et le style demandés. Le second appel permet de modifier ces valeurs après la création. L'argument arrow_type (type de flèche) peut prendre l'une des valeurs suivantes :

  ARROW_UP		# haut
  ARROW_DOWN		# bas
  ARROW_LEFT		# gauche#!/usr/bin/env python
  ARROW_RIGHT		# droite

Ces valeurs indiquent évidemment la direction dans laquelle pointera la flèche. Les valeurs possibles pour l'argument shadow_type (type d'ombre) sont :

  SHADOW_IN		# empreinte	
  SHADOW_OUT		# relief (par défaut)
  SHADOW_ETCHED_IN	# contour en empreinte
  SHADOW_ETCHED_OUT	# contour en relief

Le programme exemple fleches.py donne un aperçu de l'utilisation du widget gtk.Arrow. La Figure 9.2 montre la fenêtre que l'on obtient au lancement du programme :

Figure 9.2. Exemple de boutons avec flèches

exemple de flèche

Voici le code source de fleches.py  :

     1   #!/usr/bin/env python
     2   
     3   # exemple fleches.py
     4   
     5   import pygtk
     6   pygtk.require('2.0')
     7   import gtk
     8   
     9   # On cree une fleche avec les parametres specifies
    10   # et on la place dans un bouton
    11   def cree_fleche_bouton(type, ombre):
    12       bouton = gtk.Button();
    13       fleche = gtk.Arrow(type, ombre);
    14       bouton.add(fleche)
    15       bouton.show()
    16       fleche.show()
    17       return bouton
    18   
    19   class Fleches:
    20       def __init__(self):
    21           # Creation d'une fenetre
    22           fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
    23   
    24           fenetre.set_title("Fleches dans boutons")
    25   
    26           # C'est une bonne idee de faire ceci pour chaque fenetre
    27           fenetre.connect("destroy", gtk.main_quit)
    28   
    29           # On fixe la largeur des bordures de la fenetre
    30           fenetre.set_border_width(10)
    31   
    32           # On cree une boite pour contenir les boutons/fleches
    33           boite = gtk.HBox(False, 0)
    34           boite.set_border_width(2)
    35           fenetre.add(boite)
    36   
    37           # On place et on affiche tous nos widgets
    38           boite.show()
    39   
    40           bouton = cree_fleche_bouton(gtk.ARROW_UP, gtk.SHADOW_IN)
    41           boite.pack_start(bouton, False, False, 3)
    42   
    43           bouton = cree_fleche_bouton(gtk.ARROW_DOWN, gtk.SHADOW_OUT)
    44           boite.pack_start(bouton, False, False, 3)
    45     
    46           bouton = cree_fleche_bouton(gtk.ARROW_LEFT, gtk.SHADOW_ETCHED_IN)
    47           boite.pack_start(bouton, False, False, 3)
    48     
    49           bouton = cree_fleche_bouton(gtk.ARROW_RIGHT, gtk.SHADOW_ETCHED_OUT)
    50           boite.pack_start(bouton, False, False, 3)
    51     
    52           fenetre.show()
    53   
    54   def main():
    55       gtk.main()
    56       return 0
    57   
    58   if __name__ == "__main__":
    59       Fleches()
    60       main()