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

Tkinter Python Discussion :

Bouton reste enfoncé


Sujet :

Tkinter Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Par défaut Bouton reste enfoncé
    Bonjour,
    Bon je suis novice dans le développement python et j'ai un petit problème.

    J'ai une interface graphique avec un bouton. Lorsque je clique, la fonction Verifications est lancée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Bouton = Button(Mafenetre, text ='Lancer la configuration', command = Verifications)
    Je souhaite que, une fois la fonction lancée, le bouton soit désactivé (notamment). Donc au début de la fonction Verifications, j'ai ajouté cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bouton.config(state=DISABLED)
    La fonction fait pas mal de choses et son exécution prend quelques secondes, le soucis est que la désactivation du bouton se fait uniquement une fois que l'exécution de la fonction est terminée alors que je voudrais que le bouton soit désactivé dès le début.

    Quelqu'un peut m'expliquer ce phénomène ?

    merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par maxtheb Voir le message
    La fonction fait pas mal de choses et son exécution prend quelques secondes, le soucis est que la désactivation du bouton se fait uniquement une fois que l'exécution de la fonction est terminée alors que je voudrais que le bouton soit désactivé dès le début.

    Quelqu'un peut m'expliquer ce phénomène ?
    La fonction est un "callback".
    Son exécution bloque le traitement de l’événement suivant... déclenche par "Bouton.config(state=DISABLED)" jusqu'a son retour.

    Tous les GUI fonctionnent ainsi.
    Et Python "langage" ne sert que d'interface.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Par défaut
    bonjour,
    merci pour ta réponse mais j'avoue que j'ai pas tout compris, j'ai peut être mal expliqué mon problème aussi

    ma fonction Verifications est du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def Verifications():
    	Bouton.config(state=DISABLED)
    	action2
    	action3
    	action4
    	action4
    	showinfo("fin")
    Quand je clique sur le bouton, toutes les actions (action2, action3 ... jusqu'à showinfo) sont exécutées sauf Bouton.config(state=DISABLED) qui ne s'exécute qu'à la fin.

    Donc c'est un callback ? et comment faire pour contourner ça ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par maxtheb Voir le message
    Quand je clique sur le bouton, toutes les actions (action2, action3 ... jusqu'à showinfo) sont exécutées sauf Bouton.config(state=DISABLED) qui ne s'exécute qu'à la fin

    L'instruction "Bouton.config(state=DISABLED)" s’exécute avant les instructions action2, action3 ... qui suivent.
    C'est la mise a jour de l'affichage qui se fait "après" (et qui vous donne l'impression que...).
    Pour ne pas trop casser votre code actuel, le plus simple est d'appeler la méthode .update_idletasks juste après Button.config(...)

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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Par défaut
    merci beaucoup
    ça fonctionne

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

Discussions similaires

  1. [AC-2003] Bouton qui reste enfoncé
    Par Daejung dans le forum IHM
    Réponses: 8
    Dernier message: 20/03/2010, 12h24
  2. Bouton qui reste enfoncé
    Par hellozelo dans le forum IHM
    Réponses: 3
    Dernier message: 14/05/2008, 12h17
  3. un bouton qui reste enfoncé..
    Par lesartsde dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 28/02/2008, 22h15
  4. Propriété de bouton pour qu'il reste enfoncé
    Par fierrot dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/10/2007, 11h48
  5. TBitBtn reste enfoncé
    Par TRINCAL Sylvain dans le forum C++Builder
    Réponses: 8
    Dernier message: 25/06/2002, 16h31

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