Tk facile - le widget button

 

ulis, 2006-09-09.

Exercices : copiez-collez les exemples, exécutez-les puis modifiez-les. Durée : 30mn.


Premier script

  button .b -text "Quitter" -command exit
  grid .b

La commande button crée un widget button. La commande grid l'affiche. En appuyant sur le bouton on exécute la commande exit.


Options standards

  button .b -text "Quitter" -command exit
  grid .b
  .b configure -bg yellow \
    -font {Courier -16} -width 10

La commande button a non seulement créé un widget mais aussi une commande. Cette commande s'appelle comme le widget (ici .b) et permet de dialoguer avec lui. L'opération configure permet de modifier l'aspect ou le comportement du widget à travers des options. L'option -bg est une option abrégée qui est synonyme de l'option -background qui contrôle la couleur du fond. L'option -font contrôle elle la police du texte. L'option -width indique la largeur du widet, en nombre de caractères.

Un widget button étant un widget label particulier, pour plus de détails sur les options voir Tk facile - le widget label.


Le bouton qui se répète

La commande du bouton s'exécute une fois lorsqu'on appuie sur le bouton. Mais on peut rendre le bouton répétable.

  set ::moi "Moi !"
  grid [button .b -textvariable ::moi -command moi]
  .b configure -repeatdelay 500 -repeatinterval 250
  proc moi {} { append ::moi "moi ! " }

L'option -repeatdelay indique à partir de quand il faut commencer à répéter. L'option -repeatinterval indique le délai entre deux répétitions.


Le bouton qui flash

Un bouton sait flasher.

  grid [button .b -text "Moi !" -activebackground red]
  foreach d {1000 1500 2000 2500 3000} { after $d .b flash }

Pour flasher le bouton passe alternativement de l'état normal à l'état active. Dans l'état active le bouton utilise l'option -activebackground pour sa couleur de fond.


Le bouton-outil

Un bouton de barre d'outils est plat, se monte le col lorsqu'on passe au-dessus, et s'aplatit quand on l'appuie.

  grid [button .b -text info -command infos]
  .b configure -bd 1 -relief flat -overrelief raised
  proc infos {} { tk_dialog .d info info info 0 info }

L'option -bd (synonyme de -borderwidth) indique la hauteur du relief. L'option -relief indique le type de relief du bouton (plat : flat, en bosse : raised, en creux : sunken). L'option -overrelief indique le type du relief quand on passe la souris.


Difficultés

La seule difficulté avec le bouton c'est de passer des paramètres au script de l'option -command.

Il faut bien comprendre que l'option -command reçoit une chaîne de caractère contenant un script qui sera exécuté plus tard. Le script sera exécuté lorsque le script initial (celui qu'on a écrit) sera terminé et que Tk sera entré dans une boucle d'évènements. Pour une explication de ces notions, voir boucle des évènements.

On a besoin de paramétrer ce script lorsqu'on définit un type de bouton et que l'on en crée plusieurs.

  foreach i {1 2 3} \
  {
    button .$i -text "bouton $i" -command [list click $i]
    grid .$i -pady 10
  }
  proc click {i} { tk_messageBox -message "Je suis bouton $i" }

L'option -text et l'option -command sont paramétrées avec i.


Voir aussi


Discussion


Catégorie Cours | Catégorie Encyclopédie Tk