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