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 :

Tkinter - Commandes de deux boutons [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut Tkinter - Commandes de deux boutons
    Bonsoir,

    J'ai conçu un Monopoly en python. La totalité du programme fonctionne correctement dans la console. Quand le programme demande au joueur s'il veut acheter ou non un terrain inoccupé par exemple, le joueur rentre 1 ou 0 dans la console.
    A la place, je souhaiterais désormais ouvrir une fenêtre tkinter avec tout simplement un bouton "oui" et "non". J'entame donc mes modifications pour ajouter des fenêtres, mais je rencontre un problème : Le programme exécute les deux commandes avant même que je ne clique sur "oui" ou "non".

    Voici ma fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fen=Tk()
                        fen.title("Case Terrain")
                        texte=Label(fen,text="Vous êtes sur un terrain libre. Voulez vous l'acheter ? ")
                        texte.pack()
                        bouton1=Button(fen,text="Oui",command=ATV())
                        bouton2=Button(fen,text="Non",command=ATF())
                        bouton1.pack(side='left')
                        bouton2.pack(side='right')
                        fen.mainloop()
    Et voici les commandes des deux boutons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def ATV():
        global Cj1
        Bj1[Av]=1
        Cj1=Cj1-Prix(Av)
        print("Ce terrain est désormais à vous.")
     
    def ATF():
        print("Vous n'achetez pas.")
    Av = C'est une variable qui simule le déplacement du joueur 1 sur le terrain.
    Bj1 = C'est une liste simulant la possession ou non des terrains du monopoly par le joueur 1.
    Cj1 = C'est le capital, ou l'argent du joueur 1.
    Prix : C'est une fonction qui calcule le prix à payer par le joueur pour l'achat d'un terrain.

    Je remercie bien par avance ceux qui consacreront un peu de leurs temps à me lire et à m'aider

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par Leododo Voir le message
    A la place, je souhaiterais désormais ouvrir une fenêtre tkinter avec tout simplement un bouton "oui" et "non". J'entame donc mes modifications pour ajouter des fenêtres, mais je rencontre un problème : Le programme exécute les deux commandes avant même que je ne clique sur "oui" ou "non".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton1=Button(fen,text="Oui",command=ATV())
    Bonjour,
    Ici, une erreur récurrente.
    L'option "command" d'un bouton tkinter demande le nom d'une fonction qui sera appelée lors de l'appui sur le bouton.
    Ce nom est évalué lors de la mise en place du bouton et doit donc correspondre à l'adresse d'une fonction…

    Ici, lors de la mise en place du bouton, la commande est évaluée. ATV() renvoie "None" (car il n'y a pas de "return") et donc, à chaque utilisation du bouton, c'est "None" qui est exécuté…

    Afin que ce ne soit pas le cas, il suffit de donner uniquement le nom de la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton1=Button(fen,text="Oui",command=ATV)
    et donc, en ôtant les parenthèses!!!

    Il faut, bien sûr, corriger les autres cas similaires!!

    (Ceci est précisé dans tout tutoriel qui se respecte!!)
    Clodion

    PS: je n'ai pas regardé le reste!!

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    D'accord, j'ai corrigé, et cela fonctionne. J'avais auparavant compulsé le tutoriel sur ce même forum, mais je n'ai pas du remarqué les parenthèses.
    Merci bien

    J'ai trouvé entre temps un autre tutoriel http://python.developpez.com/faq/?pa...#ButtonCommand

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

Discussions similaires

  1. [XL-2010] Commande pour faire en sorte que deux boutons activent la même chose
    Par isrdum dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/11/2014, 22h41
  2. Réponses: 6
    Dernier message: 12/02/2010, 03h22
  3. [LabVIEW 8.6]Deux boutons pour une seule commande.
    Par bobico dans le forum LabVIEW
    Réponses: 4
    Dernier message: 08/06/2009, 16h03
  4. [JTable] Cellule avec deux boutons
    Par cherbox dans le forum Composants
    Réponses: 3
    Dernier message: 12/08/2004, 17h26
  5. Réponses: 10
    Dernier message: 10/06/2004, 16h20

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