IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tcl/Tk Discussion :

Variable changeant de valeur de manière inexplicable


Sujet :

Tcl/Tk

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 124
    Points : 71
    Points
    71
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    .carte.lf_slot_$i.slot$i configure -background $color; set color red
    et la commande suivante idem

    Code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 112
    Points
    112
    Par défaut
    Salut.

    Dans les trois codes ci-dessous tu utilises la même variable i, il est possible qu'il y ait un effet de bord entre les valeurs locales i des procédures et les variables supérieure du foreach.

    Il serait bien que tu puisses les distinguer mieux. Appelles-les peut-être
    i1 pour le foreach, i2 pour clignot, i3 pour click

    Il est possible que cela question d'un problème de lisibilité dans le code.

    A+

    --------------------------------------------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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
     
    }
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc click {i} {
     
    .carte.lf2_slot_$i.slot$i insert 0 $i
     
    }

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 124
    Points : 71
    Points
    71
    Par défaut
    salut

    en faite faut juste comprendre qu'il des variables affectées dans la procédure en cours.

    et des var global qui peuvent être utilisés dans tous les procédures.

    lool , j'ai mis qques temps a comprendre ca

    merci

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] variable change de valeur en changeant de sub
    Par Alain7751 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/07/2010, 21h16
  2. Réponses: 1
    Dernier message: 14/06/2006, 17h53
  3. Réponses: 5
    Dernier message: 14/06/2006, 16h35
  4. Couleur de cellule variable suivant une valeur
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/03/2006, 08h04
  5. Comparaisons de variables et récup valeur mini
    Par pegase23 dans le forum Access
    Réponses: 4
    Dernier message: 02/01/2006, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo