Tk par l'exemple - Faire clignoter un symbole

 

ulis, 2007-09-16.

Exercice : copiez-collez l'exemple, exécutez-le puis modifiez-le. Durée : 60 mn.


Pourquoi

Utilisé avec parcimonie un tel effet permet d'attirer l'attention de l'utilisateur sur quelque chose d'urgent ou d'important.


Comment

L'effet est obtenu au moyen d'une procédure qui se rappelle avec la commande after.


Le code

Il s'agit de faire clignoter un triangle quand on appuie sur un bouton.

Puis d'arrêter le clignotement quand on re appuie sur le bouton.

  package require Tk
  # creation du triangle
  canvas .c -width 120 -height 110 -bg red
  .c create polygon 60 10 10 100 110 100 -fill gold -tags poly
  grid .c
  # création du bouton
  button .b -width 10 -text start -command change
  grid .b -pady 5
  # commande du bouton
  set ::after ""
  proc change {} \
  {
    # test du mode du bouton
    if {[.b cget -text] eq "start"} \
    {
      # dans le mode "start" on démarre le clignotement
      .b config -text stop
      set ::after [after 0 blink]
    } \
    else \
    {
      # dans le mode "stop" on arrête le clignotement
      .b config -text start
      after cancel $::after
      .c itemconf poly -state normal
    }
  }
  # commande du triangle
  proc blink {} \
  {
    # test du mode du triangle
    if {[.c itemcget poly -state] eq "normal"} \
    {
      # dans le mode "visible" on cache le triangle
      .c itemconf all -state hidden
    } \
    else \
    {
      # dans le mode "caché" on montre le triangle
      .c itemconf poly -state normal
    }
    set ::after [after 250 blink]
  }

Explications


Voir aussi


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