Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide: souci pour créer un quiz

sous python en interface graphique

    19 avril 2015 à 18:40:13

    Bonjour,

    alors voilà je suis en terminale S avec comme option isn et mon projet est un quiz sous python en interface graphique.

    Seulement voilà j'ai  un souci quand je commence à faire tourner mon programme; soit dans le label de la question ou celui pour les différents choix deux questions ou choix de réponses se superposent et je n'arrive pas à y remédier! Pouvez vous m'aider en me disant qu'est-ce qui cloche car mes profs eux-mêmes ne savent pas quoi changer!

    Voici le début du programme en question:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    #Ligne 1 necessaire sous Linux
     
    from tkinter import *
    from math import *
    import random *
     

     
     
    #Liste + variable
    compteur=0
    nombre_de_question=0
     
    liste_questions=["Question  : Quel est le réalisateur de cette trilogie?\n ",
                     " Question  : D'où viennent les Uruk hai ?\n ",
                     " Question : Quel est le prénom d'origine de Gollum?\n",
                     " Question : Qui n'appartient plus à l'ordre de l'Istari?\n",
                     " Question : qui est l'adversaire de toujours de Gimli?\n",
                     " Question : De quelle terre Aragorn se doit de devenir roi pour épouser Arwen?\n",
                     " Question : Avant de partir à la quête de l'anneau, quel était le métier de Sam?\n",
                     " Question : Qui est le détenteur de l'anneau unique au début de l'histoire?\n",
                     " Question : Les Nazguls sont au nombre de combien?\n"]

    liste_choix=["1) Tim Burton\n"" 2) Woody Allen\n"" 3) Peter Jackson ",
                 "1) Des montagnes du Mordor\n"" 2) des fosses de l'Isengard\n"" 3) de Dol Guldur",
                 "1) Sméagol\n"" 2)Bradol\n"" 3) Déagol",
                 "1) Saroumane\n""2) Gandalf\n""3) Radagast",
                 "1)Aragorn\n""2) Legolas\n""3) Sam",
                 "1) Gondor et Arnor\n""2) Fondcombe\n""3) Parth Galen",
                 "1) Ecrivain\n""2) Cuisinier\n""3) Jardinier",
                 "1) Peregrin Touque\n""2) Frodon Sacquet\n""3)Bilbon Sacquet",

                 "1) Au nombre de 13\n""2) Au nombre de 9\n""3) Au nombre de 7"]
     
    liste_reponse=[3,2,1,1,2,1,3,3,2]

     
     
     
     
    #début du programme
    def quest():
     newWindow=Tk()
     newWindow.title('Question')
     newWindow.geometry("400x300+600+400")
     Mafenetre.destroy()
     global compteur
     
     
     while liste_questions :
                   
      n=random.randint(0,len(liste_questions)-1)
      Label1 = Label(newWindow, text = liste_questions[n])
      #Label1.pack(side = TOP, padx = 5, pady = 5)
      Label1.grid(row=2, column=2)
      
      
      Label2 = Label(newWindow, text = liste_choix[n])
             #Label2.pack(side = BOTTOM, padx = 5, pady = 5)
      Label2.grid(row=3, column=2)


      #print (liste_choix[n])
      #Q=int(input("quel numéros choississez-vous ?"))
      #if Q == liste_reponse[n]:
        #compteur = compteur +1


      liste_questions.pop(n)
      liste_choix.pop(n)
      liste_reponse.pop(n)
     #print ("c'est fini")
     
     
     
     
     
     
    def ihm():
     Mafenetre = Tk()
     
     Mafenetre.title('QCM')
     Mafenetre.geometry('400x300+600+400')
     
     Label1 = Label(Mafenetre, text = 'Voici un petit QCM présenté par Maxime, Aurélie et Joan')
     Label1.pack(side = TOP, padx = 5, pady = 5)
     
     
     Label2 = Label(Mafenetre, text = 'Voulez- vous commencez ? ')
     Label2.pack(side = LEFT, padx = 5, pady = 5)
     
     Bouton = Button(Mafenetre, text ='Oui', command = quest )
     Bouton.pack(side = LEFT, padx = 5, pady = 5)
     
     Bouton = Button(Mafenetre, text ="Non", command = Mafenetre.destroy )
     Bouton.pack(side = LEFT, padx = 5, pady = 5)
     
     return Mafenetre
     
     
     
     
    if __name__ == "__main__":
     Mafenetre = ihm()
     Mafenetre.mainloop()

    merci d'avance pour toute l'aide que vous pouvez m'apportez!

    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2015 à 7:35:26

      Salut

      peux-tu stp formater le code correctement. Il est difficile de lire du Python non formaté (il n'est pas compilable en fait).

      Tu devrais pouvoir modifier ton message, tu as un bouton "Code" dans l'éditeur.

      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2015 à 17:39:13

        Bonjour,

        je n'arrive pas � r�aliser ta demande car � dire je ne vois pas ce que tu veux dire (je sais je ne suis pas dou�e dsl) j'ai seulement codage dans l'�diteur qui me propose par la suite diff�rentes langues

        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2015 à 17:44:41

          Bonjour,

          je n'arrive pas à réaliser ta demande car à dire vrai je ne vois pas ce que tu souhaite (je ne suis pas douée dsl) j'ai seulement dans éditeur "codage" qui me propose par la suite différentes langues et aucune qui formate.

          • Partager sur Facebook
          • Partager sur Twitter
            20 avril 2015 à 20:36:05

            Le bouton "Code" est l'avant dernier bouton de la barre d'outil de l'éditeur du forum.
            • Partager sur Facebook
            • Partager sur Twitter
              10 mai 2015 à 8:33:02


              Bonjour! Désolé de ne pas avoir réagi plus tôt mais j'étais prise avec mon quiz. J'ai plutôt bien avancé mais j'aimerai ajouter un petit quelque chose; il fonctionne bien rien à redire mais quand je le commence mes radio bouton sont déjà tous cochés! Bon quand je clique sur un seul les autres se décochent mais à la question suivante le même bouton est encore coché! :colere:

              Bref j'aimerai savoir s'il y a une commande à appliquer pour que ce problème arrête de se produire... Aussi si vous avez une idée sur comment griser le bouton continuer tant que l'un des boutons radios n'est pas coché car lorsque j'étais en checkbutton je pouvais passer à la question suivante sans même avoir coché quelque chose! :o

              Voici mon code (j'ai enfin trouvé le bouton code dont tu me parlais tsez) je l'ai simplifié car sinon je pense il aurait été long.

              • Partager sur Facebook
              • Partager sur Twitter
                10 mai 2015 à 8:37:46

                 # -*- coding: cp1252 -*-
                 
                from tkinter import *
                import random
                class Donnee:
                   
                    def __init__(self):
                          
                ############### installation des différentes listes  + conditions initiales######################################
                           self.QCM=Tk()
                          
                           self.liste_indice=#10 images gif dont la première ne sert à rien, utiliser avec le bouton AIDE
                          
                           self.liste_questions=["Êtes-vous prets à vous tester à notre quiz? ",# + les 9 questions
                                                
                                               
                               
                           self.liste_choix1=[" ",# + choix de réponse associé au bouton radio n°1 selon question
                  
                           self.liste_choix2=[" ", # bouton n°2
                                             
                           self.liste_choix3=[" ",#bouton n°3
                                             
                           self.liste_reponse=[1,3,2,1,1,2,1,3,3,2]
                           self.i=0
                           self.score=0
                           self.QCM.geometry("1200x1500")
                           self.image = PhotoImage(file='background.gif')
                           self.canvas = Canvas(self.QCM, width=1, height=1)
                           self.canvas.pack(fill=BOTH, expand=1)
                           self.canvas.create_image(0, 0, image=self.image, anchor=NW)
                           self.canvas.create_text(600, 385, text=self.liste_questions[self.i],font='Times 20 italic', fill='silver' )
                           #self.QCM.configure(bg='lightblue')
                           
                           self.rouge = Radiobutton(self.QCM, text =self.liste_choix1[self.i], value="1", fg='black', bg='lightblue', font='Arial 20 bold')
                      
                           self.vert = Radiobutton(self.QCM, text =self.liste_choix2[self.i], value="2", fg='black', bg='lightblue', font='Arial 20 bold')
                         
                           self.bleu = Radiobutton(self.QCM, text =self.liste_choix3[self.i], value="3", fg='black', bg='lightblue', font='Arial 20 bold')
                          
                donnee=Donnee()
                def affiche(donnee):                     #fonction qui permet d'ouvrir une autre fenetre image! (Grâce à Tkinter_Aperghis.pdf)
                    F1=Toplevel()
                    logo = Label(F1, image=donnee)
                    logo.pack()
                    Button(F1,text="Fermer",bg='lightgrey',command=F1.destroy).pack()          
                      
                ######################## fonction associé au bouton continuer qui modifie questions, choix, images associé à i + bouton aide #################################
                def Continuer(donnee):
                   
                    global score
                    donnee.canvas.destroy()
                    donnee.bleu.destroy()
                    donnee.vert.destroy()
                    donnee.rouge.destroy()

                   
                    donnee.i=donnee.i+1
                           
                  
                    donnee.answer=(donnee.liste_reponse[donnee.i])
                    donnee.image = PhotoImage(file='background.gif')
                    donnee.canvas = Canvas(donnee.QCM, width=1, height=1)
                    donnee.canvas.create_image(0, 0, image=donnee.image, anchor=NW)
                    donnee.canvas.pack(fill=BOTH, expand=1)
                    donnee.canvas.create_text(600, 395, text=donnee.liste_questions[donnee.i],font='Times 20 italic', fill='silver' )
                 
                    donnee.rouge = Radiobutton(donnee.QCM, text =donnee.liste_choix1[donnee.i], value="1", fg='black', bg='lightblue')
                    donnee.rouge.place( x=375, y=650)

                    donnee.vert = Radiobutton(donnee.QCM, text =donnee.liste_choix2[donnee.i], value="2", fg='black', bg='lightblue')
                    donnee.vert.place(  x=575, y=650)
                 
                    donnee.bleu = Radiobutton(donnee.QCM, text =donnee.liste_choix3[donnee.i], value="3", fg='black', bg='lightblue')
                    donnee.bleu.place( x=775, y=650)

                       
                   
                    boutonVal=Button(donnee.QCM,text='Continuer', command=lambda:Continuer(donnee),fg='green')
                    boutonVal.place(x=950,y=400)#creation et emplacement du bouton valider
                    quitter=Button(donnee.QCM, text="Quitter", command=donnee.QCM.destroy)
                    quitter.place(x=950,y=500) # creation et position du bouton quitter   
                   
                    fichier_img2=PhotoImage(file=donnee.liste_indice[donnee.i])                                                 #image intégré à Python
                    AIDE=Button(donnee.QCM,text="Aide",command=lambda : affiche(fichier_img2), fg='darkblue')      #bouton qui permet l'affichage de l'image grâce à la fonction affiche
                    AIDE.place(x=950,y=300) #placement du bouton

                   
                    
                   
                boutonVal=Button(donnee.QCM,text='Continuer', command=lambda:Continuer(donnee),fg='green')
                boutonVal.place(x=950,y=400)#creation et emplacement du bouton valider

                quitter=Button(donnee.QCM, text="Quitter", command=donnee.QCM.destroy)
                quitter.place(x=950,y=500) # creation et position du bouton quitter
                donnee.QCM.mainloop()
                • Partager sur Facebook
                • Partager sur Twitter
                  10 mai 2015 à 8:39:06

                  j'espère que mon code apparaît correctement j'ai utilisé code python

                  -
                  Edité par aureliedesanceferino 10 mai 2015 à 8:43:40

                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 mai 2015 à 19:52:24

                    Me revoilà!

                    Alors j'aimerai avoir votre avis sur la démarche que je suis en train de suivre...Sur le programme ci-dessus bien sûr...

                    alors voilà j'aimerai insérer la même commande à chacun de mes boutons radios qui appelleraient une définition que j'aurai préalablement défini afin de réaliser ma commande de score.

                    Cette fonction serait du style:

                    def Fonct(donnee):

                         global score

                        i=donnee.rouge.configure.get() (de même pour vert et bleu respectivement j et k)

                       if i!=donnee.listereponse[i]:

                           score=score

                    (je fais de même avec j et k)

                    score=score+1

                    Alors cela vous parait t-il une démarche correcte à suivre? Je vous remercie d'avance pour vos réponses

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Aide: souci pour créer un quiz

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown