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

Python Discussion :

wait_variable ne détecte pas le changement de valeur de la variable [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut wait_variable ne détecte pas le changement de valeur de la variable
    Bonsoir,

    Je me bats depuis ce matin avec wait_variable. J'ai lu un paquet de pages et je ne suis toujours pas plus avancé: je n'arrive pas à faire fonctionner wait_variable.

    Une petite recherche sur ce forum m'a mené sur un post où l'intervenant, qui rencontrait le même problème, proposait un code très simple qui ne fonctionne pas, malgré des réponses du genre "ça marche très bien chez moi".

    Je l'ai encore simplifié dans le but d'enlever toute interférence possible.

    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
     
    from tkinter import *
     
    window1 = Tk()
    mavar = IntVar()
    mavar = 0
     
    def Un():
        global mavar
        mavar=1
        print("mavar dans Un")
        print(mavar)
     
     
    def Deux():
        global mavar
        mavar=2
        print("mavar dans Deux")
        print(mavar)
     
     
     
    def Attendre():
        global mavar
        print('Attente de mavar')
        print('sa valeur est ', str(mavar))
        window1.wait_variable(mavar)
        print('mavar a changé')
        print('sa valeur est ', str(mavar))
     
    b1 = Button(window1, text="1", command=Un)
    b1.pack()
    b2 = Button(window1, text="2", command=Deux)
    b2.pack()
    b3 = Button(window1, text="Lancer l'attente", command=Attendre)
    b3.pack()
     
    window1.mainloop()
    Le message "mavar a changé" n'est jamais affiché

    Qu'est-ce qui cloche dans ce code?

    Merci pour vos avis éclairés.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 193
    Billets dans le blog
    47
    Par défaut
    Bonsoir,

    Citation Envoyé par ryan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mavar = IntVar()
    mavar = 0
    Sans être un spécialiste, on voit ici que si mavar est une variable de contrôle tkinter à la première ligne, la ligne suivante tu écrases tout et mavar devient un simple entier à 0...


    D'après la doc, ces objets ont leurs méthodes set et get :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print(mavar.get()) # valeur de mavar
    mavar.set(valeur) # affectation d'une valeur à mavar

  3. #3
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    Merci à tous, l'exemple corrigé fonctionne à présent, et j'ai réussi à faire fonctionner une version simplifié de mon script également. Il ne me reste plus qu'à reporter les modifs dans mon script complet et tout devrait donc rouler

    Je croise les doigts...

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    On peut aussi initialiser la variable (paramètre value).

    Pour suivre les changements il y a la méthode trace.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par ryan Voir le message
    Le message "mavar a changé" n'est jamais affiché

    Qu'est-ce qui cloche dans ce code?
    Si on écrit mavar=1, on assigne 1 à la variable globale Python "mavar" mais on ne modifie pas l'objet "variable Tk" associé qui se fait via la méthode .set (avec .get pour "lire"): l'objet n'a pas changé, il a juste été détruit.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Evenement sur changement d0une valeur d'une variable
    Par Destiny dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/04/2008, 09h28
  2. [SQL] Détection du changement de valeur d'une variable
    Par micatmidog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/06/2007, 20h22
  3. Réponses: 8
    Dernier message: 29/03/2007, 14h48
  4. [VB.NET]Test sur changement de valeur d'une variable
    Par shinji_rem dans le forum Windows Forms
    Réponses: 9
    Dernier message: 29/11/2006, 15h53
  5. Intercepter le changement de valeur d'une variable
    Par Captain_JS dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/01/2005, 08h04

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