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

GUI Python Discussion :

cherche comme attribuer une commande à un bouton


Sujet :

GUI Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut cherche comme attribuer une commande à un bouton
    salut,
    je cherche comme attribuer une commande à un bouton,
    le but est si on répond bon à la question on arrive à la deuxième question,
    mais je bloque, car quand j'appuis sur la bonne réponse, je ne passe pas à la deuxième question,
    si quelqu'un peut me conseiller cela serai gentil.
    merci
    voici mon code :
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    from tkinter import*
    import random
    import sys
     
    #création d'un répertoire de questions pour chaque niveau
    questions1=["ques1.1","ques1.2","ques1.3","ques1.4"]
    questions2=["ques2.1","ques2.2","ques2.3","ques2.4"]
    questions3=["ques3.1","ques3.2","ques3.3","ques3.4"]
     
    #création d'un répertoire de réponse à la questions qui lui correspond pour chaque niveau
    réponseA1=["zéroA","unA","deuxA","troisA"]
    réponseB1=["zéroB","unB","deuxB","troisB"]
    réponseC1=["zéroC","unC","deuxC","troisC"]
    réponseD1=["zéroD","unD","deuxD","troisD"]
    réponseA2=["zéroA2","unA2","deuxA2","troisA2"]
    réponseB2=["zéroB2","unB2","deuxB2","troisB2"]
    réponseC2=["zéroC2","unC2","deuxC2","troisC2"]
    réponseD2=["zéroD2","unD2","deuxD2","troisD2"]
     
    #création du texte pour la qestion
    xn1 = random.randint(0,3) # on prend un nombre entier entre [0;3]
    question = questions1[xn1] # on prendre la question x dans le répertoire des questions 1
     
    # création du texte pour les réponses possible à la question correspondante
    réponseA=réponseA1[xn1]
    réponseB=réponseB1[xn1]
    réponseC=réponseC1[xn1]
    réponseD=réponseD1[xn1]
     
    # fonction si le joueur répond bon à la question
    def bonneréponse1 () :
        xn2 = random.randint(0,3)
        question2=questions2[xn2]
        réponseA=réponseA2[xn2]
        réponseB=réponseB2[xn2]
        réponseC=réponseC2[xn2]
        réponseD=réponseD2[xn2]
     
    # création de la fenêtre du jeu
    fenetre=Tk()
    fenetre.title("Qui veut gagner des millions ?")
    fenetre['bg']='#5EB6DD'
     
    # création d'une frame (un cadre dans la fenêtre)
    reponse=Frame(fenetre,borderwidth=2,relief=GROOVE)
    reponse.pack(side=LEFT,padx=10,pady=10)
    reponse.grid(row=1,column=1)
    gain=Frame(fenetre,borderwidth=2,relief=GROOVE)
    gain.pack(side=LEFT,padx=10,pady=10)
    gain.grid(row=1,column=2)
     
    # création du cadre pour la question
    cadrequestion=Label(fenetre,text=question,font="arial 18",fg="black",bg="green")
    cadrequestion.grid(row=0,column=1)
     
    # création des boutons réponses
    boutonréponseA=Button(reponse,text=réponseA,font="arial 18",fg="black",bg="blue",command="bonneréponse1")
    boutonréponseA.grid(row=1,column=1)
    boutonréponseB=Button(reponse,text=réponseB,font="arial 18",fg="black",bg="blue")
    boutonréponseB.grid(row=1,column=2)
    boutonréponseC=Button(reponse,text=réponseC,font="arial 18",fg="black",bg="blue")
    boutonréponseC.grid(row=2,column=1)
    boutonréponseD=Button(reponse,text=réponseD,font="arial 18",fg="black",bg="blue")
    boutonréponseD.grid(row=2,column=2)
     
    # création du tableau de gain
    tablegain=Label(gain,text="100€",font="arial 18",fg="black",bg="orange")
    tablegain.grid(row=1,column=1)
     
    fenetre.mainloop()

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 43
    Par défaut
    Bonjour,

    Déjà je te conseil d'éviter les accents pour les noms de variables du genre "réponse".

    Ton programme actuel pêche un peu. Déjà je crois que tu n'associe la bonne réponse qu'à A (seul "boutonreponseA" est associé à la commande "bonnereponse1") or je suppose que tu ne souhaite pas que ton jeu se limite à un spam de la case A =).

    Ensuite, lorsque tu appel "bonnereponse1" tu ne fais que redéfinir la valeurs de tes variables "reponseA", "reponseB"... Cela ne va pas modifier ton affichage vu que le texte de tes boutons a déjà été défini.

    Pour modifier le texte de tes boutons tu peux passer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boutonreponseA.config(text="Ta nouvelle réponse A")
    Le mieux serait d'associer tout tes boutons à une fonction qui vérifierait si tu as appuyé sur la bonne réponse et qui seulement après, change tes variables et le texte de tes boutons.

    Après je trouve que c'est un peu compliqué ta manière de gérer les questions et les réponses, de plus sur ta base de code on n'a pas d'information sur la bonne réponse (c'est laquelle?). Niveau organisation tu gagnerai surement beaucoup à passer par tes propres classes.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Ok, merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Ce n'est pas normal que la commande soit une string.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    boutonréponseA=Button(reponse,text=réponseA,font="arial 18",fg="black",bg="blue",command="bonneréponse1")

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    VinsS je ne comprends pas se que vous voulez dire

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Citation Envoyé par Viand0x Voir le message
    Bonjour,

    Déjà je te conseil d'éviter les accents pour les noms de variables du genre "réponse".

    Ton programme actuel pêche un peu. Déjà je crois que tu n'associe la bonne réponse qu'à A (seul "boutonreponseA" est associé à la commande "bonnereponse1") or je suppose que tu ne souhaite pas que ton jeu se limite à un spam de la case A =).

    Ensuite, lorsque tu appel "bonnereponse1" tu ne fais que redéfinir la valeurs de tes variables "reponseA", "reponseB"... Cela ne va pas modifier ton affichage vu que le texte de tes boutons a déjà été défini.

    Pour modifier le texte de tes boutons tu peux passer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boutonreponseA.config(text="Ta nouvelle réponse A")
    Le mieux serait d'associer tout tes boutons à une fonction qui vérifierait si tu as appuyé sur la bonne réponse et qui seulement après, change tes variables et le texte de tes boutons.

    Après je trouve que c'est un peu compliqué ta manière de gérer les questions et les réponses, de plus sur ta base de code on n'a pas d'information sur la bonne réponse (c'est laquelle?). Niveau organisation tu gagnerai surement beaucoup à passer par tes propres classes.
    Non je ne souhaite pas que le programme se tient à la réponse A, mais s'est pour le moment qu'un test le temps que je trouve comment passer à la question suivante si on répond bon à la question.
    Après le config, on le place dans bonne réponse 1 ?
    Et comment faite on pour associer des fonctions à des bouton ?
    Merci

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    boutonréponseA=Button(reponse,text=réponseA,font="arial 18",fg="black",bg="blue",command=bonneréponse1)

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    boutonréponseA=Button(reponse,text=réponseA,font="arial 18",fg="black",bg="blue",command=bonneréponse1)
    Je ne comprends toujours pas, que voulez-vous dire avec le string

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 43
    Par défaut
    Bonjour,

    Lorsque tu veux appeler une fonction par l'appui d'un bouton tu mets le nom de ta fonction dans la méthode "command":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boutonréponseA=Button(reponse,text=réponseA,font="arial 18",fg="black",bg="blue",command=bonneréponse1)
    toi tu as marqué:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boutonréponseA=Button(reponse,text=réponseA,font="arial 18",fg="black",bg="blue",command="bonneréponse1")
    "bonneréponse1" est différent de bonneréponse1!

    Après cela, lorsque tu clickera sur ton boutonréponseA (et avant il serait bon de renommer ces variables sans mettre d'accents), cela déclenchera la fonction bonneréponse1 (également à renommer).

    Le but de cette fonction serait de vérifier si on a cliqué sur la bonne case. Pour ça il faut que dans ton code il soit précisé quelles sont les bonnes réponses pour pouvoir vérifier tout ça. Enfin, si la réponse est juste tu pourra alors passer à la question suivante et modifier le texte de tes boutons.

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/07/2009, 17h22
  2. Réponses: 2
    Dernier message: 11/04/2009, 13h23
  3. je cherche une commande pour vider les tables
    Par BECHIRXV dans le forum SQL
    Réponses: 10
    Dernier message: 18/01/2008, 13h41
  4. [VBA][Excel] Nom d'une command bouton
    Par ecirb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2007, 11h29
  5. Réponses: 1
    Dernier message: 17/10/2005, 10h34

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