Variable changeant de valeur de manière inexplicable
Salut
Voilà, dans ma procédure "clignot" il y a une variable "i" qui arrive bien à la valeur demandée mais, quand elle exécute une commande de la procédure, elle prend une autre valeur. Quelqu'un peut-il m 'aider svp ?
Exemple : si je clique sur le bouton 2 i est = a 2 (voir "tk_message ds le code" ) au début de la proc clignot mais prend la valeur 14 constamment à la commande
Code:
.carte.lf_slot_$i.slot$i configure -background $color; set color red
et la commande suivante idem
Code complet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| labelframe .carte -text "Reset / Etat des cartes"
foreach board { 1 2 3 4 5 6 7 8 9 10 11 12 13 14} {
labelframe .carte.lf_slot_$board
}
grid .carte -row 1 -column 1
foreach board { 1 2 3 4 5 6 7 8 9 10 11 12 13 14} {
grid .carte.lf_slot_$board -row $board -column 1
}
foreach i { 1 2 3 4 5 6 7 8 9 10 11 12 13 14} {
button .carte.lf_slot_$i.slot$i -text "$i" -width 7 -command [list clignot $i] -background grey
pack .carte.lf_slot_$i.slot$i
}
foreach board { 1 2 3 4 5 6 7 8 9 10 11 12 13 14} {
labelframe .carte.lf2_slot_$board
}
foreach board { 1 2 3 4 5 6 7 8 9 10 11 12 13 14} {
grid .carte.lf2_slot_$board -row $board -column 2
}
foreach board { 1 2 3 4 5 6 7 8 9 10 11 12 13 14} {
entry .carte.lf2_slot_$board.slot$board -width 35 -justify center
pack .carte.lf2_slot_$board.slot$board
}
proc clignot {i} {
global color boucle
set color grey
set boucle 1
tk_messageBox -message $i
while {$boucle < 30} {
after [expr $boucle*300] {.carte.lf_slot_$i.slot$i configure -background $color; set color red}
incr boucle
after [expr $boucle*600] {.carte.lf_slot_$i.slot$i configure -background $color;set color grey}
incr boucle
}
}
proc click {i} {
.carte.lf2_slot_$i.slot$i insert 0 $i
} |