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 :

Commande pour bouton aléatoire


Sujet :

GUI Python

  1. #1
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut Commande pour bouton aléatoire
    Salut, je voudrai savoir comment on pourrait associer une commande (comme qui la fenêtre) à un bouton lorsque le texte des boutons est placé aléatoirement ?
    Je m'explique j'ai 4 boutons, mais je voudrai mettre une commande (comme qui la fenêtre) à un bouton, mais la commande doit suivre le texte qui lui est associé. C'est à dire :
    Si le bouton A est le bon bouton on lui attribue la commande, ainsi les boutons B,C et D n'auront pas de commande.
    Mais si c'est le bouton B qui est le bon bouton alors c'est à lui qu'on attribue la commande, ainsi les boutons A, C et D n'auront pas de commande.

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

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

    De la même manière qu'on utilise NomDuBoutton.config(text="blabla") pour changer le texte de ton bouton, on utilise NombDuBoutton.config(command=NouvelleCommande) pour modifier sa commande. Tu as l'ensemble des configurations sur la doc, n'hésite pas à la consulter : http://effbot.org/tkinterbook/button.htm*.

    Si je reprend tes noms de variable, tu peux bidouiller un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    globals()["boutonreponse"+solution].config(command=TaFonction)
    Avec solution = "A" si la bonne réponse est A.

    Je pense également que les autres bouton doivent être liés à une commande, sinon on ne peut pas perdre.

  3. #3
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Viand0x Voir le message
    Bonjour,

    De la même manière qu'on utilise NomDuBoutton.config(text="blabla") pour changer le texte de ton bouton, on utilise NombDuBoutton.config(command=NouvelleCommande) pour modifier sa commande. Tu as l'ensemble des configurations sur la doc, n'hésite pas à la consulter : http://effbot.org/tkinterbook/button.htm*.

    Si je reprend tes noms de variable, tu peux bidouiller un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    globals()["boutonreponse"+solution].config(command=TaFonction)
    Avec solution = "A" si la bonne réponse est A.

    Je pense également que les autres bouton doivent être liés à une commande, sinon on ne peut pas perdre.
    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
    71
    72
    73
    74
    75
    #création d'un répertoire de questions pour chaque niveau
    questions1=["ques1.0","ques1.1","ques1.2","ques1.3"]
    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
    reponseA1=["A- bonne réponse 0","A- bonne réponse 1","A- bonne réponse 2","A- bonne réponse 3"]
    reponseB1=["B- mauvaise réponse 1.0","B- mauvaise réponse 1.1","B- mauvaise réponse 1.2","mauvaise réponse 1.3"]
    reponseC1=["C- mauvaise réponse 2.0","C- mauvaise réponse 2.1","mauvaise réponse 2.2","mauvaise réponse 2.3"]
    reponseD1=["D- mauvaise réponse 3.0","mauvaise réponse 3.1","mauvaise réponse 3.2","mauvaise réponse 3.3"]
    reponseA2=["zéroA2","unA2","deuxA2","troisA2"]
    reponseB2=["zéroB2","unB2","deuxB2","troisB2"]
    reponseC2=["zéroC2","unC2","deuxC2","troisC2"]
    reponseD2=["zéroD2","unD2","deuxD2","troisD2"]
    reponseA3=["zéroA3","unA3","deuxA3","troisA3"]
    reponseB3=["zéroB3","unB3","deuxB3","troisB3"]
    reponseC3=["zéroC3","unC3","deuxC3","troisC3"]
    reponseD3=["zéroD3","unD3","deuxD3","troisD3"]
     
    #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
    reponseA=reponseA1[xn1]
    reponseB=reponseB1[xn1]
    reponseC=reponseC1[xn1]
    reponseD=reponseD1[xn1]
     
    # bouton placé aléatoirement
    placealeatoire=[reponseA,reponseB,reponseC,reponseD]
    An1=random.randint(0,3) # on prend un mot aléatoirement
    Bn1=random.randint(0,3) # on initialise Bn1
    while Bn1 == An1 :      # tant que Bn1 est égale à An1 on recommence la fonction aléatoire,
        Bn1=random.randint(0,3) # ainsi, il est impossible que An1, Bn1, Cn1 et Dn1 est la même réponse
    Cn1=random.randint(0,3)
    while Cn1 == An1 or Cn1 == Bn1:
        Cn1=random.randint(0,3)
    Dn1=random.randint(0,3)
    while Dn1 == An1 or Dn1 == Bn1 or Dn1 == Cn1 :
        Dn1=random.randint(0,3)
    placeA=placealeatoire[An1]
    placeB=placealeatoire[Bn1]
    placeC=placealeatoire[Cn1]
    placeD=placealeatoire[Dn1]
     
     
    # 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)
    cadrereponse=Frame(fenetre,borderwidth=2,relief=GROOVE)
    cadrereponse.pack(side=LEFT,padx=10,pady=10)
    cadrereponse.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 : question 1
    boutonreponseA=Button(cadrereponse,text=placeA,font="arial 18",fg="black",bg="blue",command=questionsuivante1)
    boutonreponseA.grid(row=1,column=1)
    boutonreponseB=Button(cadrereponse,text=placeB,font="arial 18",fg="black",bg="blue")
    boutonreponseB.grid(row=1,column=2)
    boutonreponseC=Button(cadrereponse,text=placeC,font="arial 18",fg="black",bg="blue")
    boutonreponseC.grid(row=2,column=1)
    boutonreponseD=Button(cadrereponse,text=placeD,font="arial 18",fg="black",bg="blue")
    boutonreponseD.grid(row=2,column=2)
    # c'est la que je coince car je ne sais pas le quel bouton à la bonne réponse vu que s'est fait aléatoirement
    fenetre.mainloop()
    je ne comprends pas trop où mettre le code que vous m'avez donné.

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 43
    Points : 60
    Points
    60
    Par défaut
    Je pense que vous avez les clefs pour réaliser votre projet, mais c'est un peu brouillon tout ça.

    1) Il vous faut sauvegarder quelles réponses sont bonnes, actuellement vous mettez en texte "bonne réponse" ou "mauvaise réponse". C'est un début mais quand votre projet sera complet il n'y aura plus ces phrases en texte.

    2) De ce que j'ai compris vous simulez actuellement 3 "niveaux" de questions. Pour chaque niveau de question vous sauvegarder les réponses A dans la liste reponseA1 (pour le niveau 1), idem pour B, C et D. C'est votre manière de gérer vos paramètres mais ça risque de devenir un peu compliqué lorsque votre jeu comportera 30 questions non?

    Personnellement j'aurai créé un fichier texte (.txt) par niveau de question, dedans j'aurais mis mes questions et mes réponses (et le numéro de la bonne réponse) et je les aurais lu avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open('fichier.txt', 'r') as mon_fichier:
        texte = mon_fichier.read()
    Comme ça si tu as mis une ligne par question il te suffit d'importer une ligne au pif pour avoir ta question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with open('fichier.txt', 'r') as mon_fichier:
        texte = mon_fichier.read().split('\n')
        question = texte[random.randint(0,3)]
    Et tu sépare "question" (qui contient la questions et les réponses et le numéro de la bonne réponse). Par exemple si t'as organisé ton fichier texte avec des lignes comme ça "Comment ça va? - Bien - Moyen - Super - bof - 0" tu fera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    with open('fichier.txt', 'r') as mon_fichier:
        texte = mon_fichier.read().split('\n')
        question = texte[random.randint(0,3)].split(' - ')
     
    Q = question[0]
    R1= question[1]
    R1= question[2]
    R1= question[3]
    R1= question[4]
    solution = int(question[5])
    3) Tu crée des boutons avec en lien une commande vers la fonction "questionsuivante1" mais celle-ci n'existe plus dans ton code. C'est ici que tu dois associer la bonne réponse au bon bouton.

  5. #5
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Je comprends pas trop, je suis perdu

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/07/2019, 12h11
  2. bouton de commande pour quitter le site?
    Par hafcher dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/06/2008, 11h49
  3. Réponses: 3
    Dernier message: 28/04/2008, 10h19
  4. Bouton de commande pour aller au slide suivant
    Par tomy7 dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 17/04/2008, 13h43
  5. bouton de commande pour impression
    Par Raphaëlle dans le forum Access
    Réponses: 1
    Dernier message: 21/09/2006, 15h51

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