Tk est une surcouche graphique de Tcl.
Il permet de créer les widgets (objets graphiques) suivants:
Et si cela ne suffit pas on utiliser des widgets supplémentaires grâce à des extensions comme Bwidget et Iwidget.
Pour placer les widget dans une fenêtre, il existe trois gestionnaires:
Voici comment:
Les fenêtres:
Lorsqu'on lance l'interpréteur wish, une fenêtre apparait.
C'est la fenêtre principale, appellée aussi root et nommé "
." dans tcl/tk.
On peut créer d'autres fenêtres avec l'objet
toplevel.
La commande:
wm geometry . 300x200
Change la taille de la fenêtre principale (300 pixels de largeur, 200 pixels de hauteur).
On peut aussi changer l'emplacement de la fenêtre:
wm geometry . +x+y
Ou
x et
y sont l'abcisse et l'ordonnée (en pixels) du coin supérieur gauche de la fenêtre.
On peut appliquer cette commande aussi bien à la fenêtre principale
qu'a des sous-fenêtres (ou
toplevel).
Le packer
La commande
pack permet de placer des widgets soit horizontalement (-side left ou rigth),
soit verticalement (-side top).
Lorsqu'on veut passer d'un placement horizontal à un placement vertical on utilise des frame.
Exemple:
frame .f
label .f.lb1 -text "message"
entry .f.entre -textvariable msg
label .lb2 -text "resultat:"
label .res -textvariable msg -fg blue
# On place les premiers widgets horizontalement dans la frame:
pack .f.lb1 .f.entre -side left
# puis on place la frame et les autres widget verticalement:
pack .f .lb2 .res -side top
Remarque:
destroy .f
permet de supprimer le widget .f
pack forget .f
retire le widget de l'interface sans le détruire, on peut le replacer avec la commande pack.
Le grid
Le même exemple que préccédement, avec la commande grid:
label .lb1 -text "message"
entry .entre -textvariable msg
label .lb2 -text "resultat:"
label .res -textvariable msg -fg blue
grid .lb1 .entre
grid .lb2
grid .res
On peut aussi spécifier les lignes et colomnes
ou doivent être placé un widget:
grid .lb1 -row 0 -colomns 0
Le placer
La commande place permet de placer un objet graphique (widget) à la position x y:
label .lb -text "un label"
place .lb -x 50 -y 50
La commande configure
Cette commande permet de modifier des options de n'importe quel widget déjà placé sur l'interface.
Exemple, pour changer la couleur d'un label:
.lb configure -bg blue -fg white
Les évenements
La méthode bind permet d'associer une commande (ou une procédure) à un événement (clavier, souris, focus...).
Quand l'événement a lieu, la commande (ou la procédure) est exécutée.
Synthaxe:
bind .widget <événement> { commande }
Exemple:
set var 0
set var1 "..."
label .lab -textvariable var
bind .lab <1> { incr var} ;# un click gauche incrémente var1
bind .lab <2> { set var 0} ;# un click du milieu remet var1 à 0
bind .lab <3> { incr var -1} ;# un click droit décrémente var1
label .lab1 -textvariable var1
bind .lab1 <Enter> { set var1 "Enter" } ;# quand le pointeur de la souris entre dans le widget
bind .lab1 <Leave> { set var1 "Leave" } ;# quand il en sort
# raccourci clavier pour quitter le programme:
bind . <Control-q> quitter
proc quitter {} {
exit
}
pack .lab .lab1