honrisse | manolisn a écrit :
c'est bon j'ai reussi a present il faut que je rentre les questions grace a ce programme:
Code :
- class Question:
- """Classe définissant une liste de question:
- -son énoncé
- -sa réponse 1
- -sa réponse 2
- -sa réponse 3
- -sa réponse juste"""
- def __init__(self, enonce="", rep1="", rep2="", rep3="", repjuste="" ): # Définition des objetss de la classe
- self.enonce = enonce
- self.rep1 = rep1
- self.rep2= rep2
- self.rep3 = rep3
- self.repjuste = repjuste
-
- n=1 #compteur du nombre de question
- # -*- coding: cp1252 -*-
- from Tkinter import* # On importe Tkinter, on utilisera l'iinerface pour faciliter l'enregistrement de question dans un dictionnaire.
- Fen1=Tk() #Création de la fênetre, des entrées, etc
- Fen1.title(u"Création question" )
- Af1=Label(Fen1, text= u"Ecrire une question." )
- Af2=Label(Fen1, text="Ecrire la réponse 1." )
- Af3=Label(Fen1, text="Ecrire la réponse 2." )
- Af4=Label(Fen1, text="Ecrire la réponse 3." )
- Af5=Label(Fen1, text="Ecrire la réponse juste." )
- Af6=Label(Fen1, text="" )
- Ent1=Entry(Fen1)
- Ent2=Entry(Fen1)
- Ent3=Entry(Fen1)
- Ent4=Entry(Fen1)
- Ent5=Entry(Fen1)
- Q1=Question () # Pour faciliter l'écriture on renomme la classe
- def ma_commande1(): # On crée une commande qui à pour but de vérifier si toutes les entrées possèdent un texte.
- enonce=Ent1.get() # On renomme les textes entrés pur faciliter l'utilisation de ceux-ci et meiux les reconnaitre.
- rep1=Ent2.get()
- rep2=Ent3.get()
- rep3=Ent4.get()
- repjuste=Ent5.get()
- if enonce=="" or rep1=="" or rep2=="" or rep3=="" or repjuste=="": # On intègre une condition permettant de vérifier si les entrées sont vides.
- Bout2.pack_forget () # Ainsi le bouton disparaitra.
- Af6.configure(text= u"Vous n'avez pas rempli toutes les cases" ) # On précise le problème à l'utilisateur.
- else:
- Bout2.pack () # Si les entrées possédent un texte le bouton apparaitra.
- Af6.configure(text= u"" )
-
- def ma_commande2():
- global n # On intègre le compteur de question à la commande
- enonce=Ent1.get() # On renomme les textes entrés pur faciliter l'utilisation de ceux-ci et meiux les reconnaitre.
- Q1.enonce= (enonce) # On enregistre le texte entré dans l'objet correspondant au texte, ici l'objet énoncé, !!!!! dans la classe correspondant à la question. !!!!!!
- Ent1.delete (0,END) # On supprime le texte contenue dans l'entrée pour pouvoir entrer un nouveau texte
- rep1=Ent2.get() #De même
- Q1.rep1=(rep1)
- Ent2.delete (0,END)
- rep2=Ent3.get() #De même
- Q1.rep2=(rep2)
- Ent3.delete (0,END)
- rep3=Ent4.get() #De même
- Q1.rep3= (rep3)
- Ent4.delete (0,END)
- repjuste=Ent5.get() #De même
- Q1.repjuste=(repjuste)
- Ent5.delete (0,END)
- n=n+1 # Le compteur augmente à chaque fois que l'on appuie sur le bouton.
- Af1.configure(text= u"Ecrire une question "+ str(n)+'.') # On met à jour le numéro de la question, de l'énoncé ....
- Af2.configure(text= u"Ecrire la réponse 1, de la question "+ str(n)+'.')
- Af3.configure(text= u"Ecrire la réponse 2, de la question "+ str(n)+'.')
- Af4.configure(text= u"Ecrire la réponse 3, de la question "+ str(n)+'.')
- Af5.configure(text= u"Ecrire la réponse juste, de la question "+ str(n)+'.')
- Bout2.pack_forget () # On fait dispaaitre le bouton pour que l'utilsateur ne puisse l'utiliser.
- Bout1=Button(Fen1,text=u"Vérifie",command=ma_commande1) # Création des boutons
- Bout2=Button(Fen1,text=u"Enregistre les questions ici !",command=ma_commande2)
- Af1.pack() # Affichage des différents bidules.
- Ent1.pack()
- Af2.pack()
- Ent2.pack()
- Af3.pack()
- Ent3.pack()
- Af4.pack()
- Ent4.pack()
- Af5.pack()
- Ent5.pack()
- Af6.pack()
- Bout1.pack()
- Bout2.pack_forget()
- Fen1.mainloop()
|
|
C'est mieux avec la classe question.
En assemblant les deux parties du programme on peut arriver à quelque chose de potable (ajout d'un bouton pour quitter la fenêtre de saisie, reponse juste=A,B ou C, ajout d'une liste pour sauvegarder les questions, ajout de la partie jeu QCM), peut être que cela peut vous inspirer :
Code :
- class Question:
- """Classe définissant une liste de question:
- -son énoncé
- -sa réponse 1
- -sa réponse 2
- -sa réponse 3
- -sa réponse juste"""
- def __init__(self, enonce="", rep1="", rep2="", rep3="", repjuste="" ): # Définition des objetss de la classe
- self.enonce = enonce
- self.rep1 = rep1
- self.rep2= rep2
- self.rep3 = rep3
- self.repjuste = repjuste
- #permet d'afficher avec print
- def __str__(self):
- return "enonce=%s ; rep1=%s ; rep2=%s ; rep3=%s ; repJuste=%s" % (self.enonce, self.rep1, self.rep2, self.rep3, self.repjuste)
- n=1 #compteur du nombre de question
- # -*- coding: cp1252 -*-
- from Tkinter import* # On importe Tkinter, on utilisera l'iinerface pour faciliter l'enregistrement de question dans un dictionnaire.
- ################################################################################
- #fenetre de saisie des questions
- Fen1=Tk() #Création de la fênetre, des entrées, etc
- Fen1.title(u"Création question" )
- Af1=Label(Fen1, text= u"Ecrire une question." )
- Af2=Label(Fen1, text="Ecrire la réponse A." )
- Af3=Label(Fen1, text="Ecrire la réponse B." )
- Af4=Label(Fen1, text="Ecrire la réponse C." )
- Af5=Label(Fen1, text="Ecrire la réponse juste (A, B ou C)." )
- Af6=Label(Fen1, text="" )
- Ent1=Entry(Fen1)
- Ent2=Entry(Fen1)
- Ent3=Entry(Fen1)
- Ent4=Entry(Fen1)
- Ent5=Entry(Fen1)
- #on stocke les questions dans une liste
- listOfQuestions = []
- Q1=Question() # Pour faciliter l'écriture on renomme la classe
- def ma_commande1(): # On crée une commande qui à pour but de vérifier si toutes les entrées possèdent un texte.
- enonce=Ent1.get() # On renomme les textes entrés pur faciliter l'utilisation de ceux-ci et meiux les reconnaitre.
- rep1=Ent2.get()
- rep2=Ent3.get()
- rep3=Ent4.get()
- repjuste=Ent5.get()
- if enonce=="" or rep1=="" or rep2=="" or rep3=="" or repjuste=="": # On intègre une condition permettant de vérifier si les entrées sont vides.
- Bout2.pack_forget () # Ainsi le bouton disparaitra.
- Af6.configure(text= u"Vous n'avez pas rempli toutes les cases" ) # On précise le problème à l'utilisateur.
- else:
- Bout2.pack () # Si les entrées possédent un texte le bouton apparaitra.
- Af6.configure(text= u"" )
- Bout3.pack ()
- def ma_commande2():
- global n # On intègre le compteur de question à la commande
- enonce=Ent1.get() # On renomme les textes entrés pur faciliter l'utilisation de ceux-ci et meiux les reconnaitre.
- Q1.enonce=enonce # On enregistre le texte entré dans l'objet correspondant au texte, ici l'objet énoncé, !!!!! dans la classe correspondant à la question. !!!!!!
- Ent1.delete (0,END) # On supprime le texte contenue dans l'entrée pour pouvoir entrer un nouveau texte
- rep1=Ent2.get() #De même
- Q1.rep1=rep1
- Ent2.delete (0,END)
- rep2=Ent3.get() #De même
- Q1.rep2=rep2
- Ent3.delete (0,END)
- rep3=Ent4.get() #De même
- Q1.rep3= rep3
- Ent4.delete (0,END)
- repjuste=Ent5.get() #De même
- Q1.repjuste=repjuste
- Ent5.delete (0,END)
- n=n+1 # Le compteur augmente à chaque fois que l'on appuie sur le bouton.
- Af1.configure(text= u"Ecrire une question "+ str(n)+'.') # On met à jour le numéro de la question, de l'énoncé ....
- Af2.configure(text= u"Ecrire la réponse A, de la question "+ str(n)+'.')
- Af3.configure(text= u"Ecrire la réponse B, de la question "+ str(n)+'.')
- Af4.configure(text= u"Ecrire la réponse C, de la question "+ str(n)+'.')
- Af5.configure(text= u"Ecrire la réponse juste (A, B ou C), de la question "+ str(n)+'.')
- Bout2.pack_forget () # On fait dispaaitre le bouton pour que l'utilsateur ne puisse l'utiliser.
- Bout3.pack_forget()
- print"current question=", Q1
- Q = Question(Q1.enonce, Q1.rep1, Q1.rep2, Q1.rep3, Q1.repjuste)
- listOfQuestions.append(Q)
- def close_window_saisie():
- enonce=Ent1.get() # On renomme les textes entrés pur faciliter l'utilisation de ceux-ci et meiux les reconnaitre.
- Q1.enonce=enonce # On enregistre le texte entré dans l'objet correspondant au texte, ici l'objet énoncé, !!!!! dans la classe correspondant à la question. !!!!!!
- rep1=Ent2.get() #De même
- Q1.rep1=rep1
- rep2=Ent3.get() #De même
- Q1.rep2=rep2
- rep3=Ent4.get() #De même
- Q1.rep3= rep3
- repjuste=Ent5.get() #De même
- Q1.repjuste=repjuste
- print"last question=", Q1
- Q = Question(Q1.enonce, Q1.rep1, Q1.rep2, Q1.rep3, Q1.repjuste)
- listOfQuestions.append(Q)
- Fen1.destroy()
- Bout1=Button(Fen1,text=u"Vérifie", command=ma_commande1) # Création des boutons
- Bout2=Button(Fen1,text=u"Enregistre les questions ici !", command=ma_commande2)
- Bout3=Button(Fen1,text=u"Enregistre les questions ici et quitte la saisie !", command=close_window_saisie)
- Af1.pack() # Affichage des différents bidules.
- Ent1.pack()
- Af2.pack()
- Ent2.pack()
- Af3.pack()
- Ent3.pack()
- Af4.pack()
- Ent4.pack()
- Af5.pack()
- Ent5.pack()
- Af6.pack()
- Bout1.pack()
- Bout2.pack_forget()
- Bout3.pack_forget()
- Fen1.mainloop()
- #affiche les questions sauvegardees dans la liste
- for index in range(len(listOfQuestions)):
- print listOfQuestions[index]
- ################################################################################
- if len(listOfQuestions)>0 :
- #partie affichage de la fenetre du jeu
- Fen1=Tk()
- Fen1.title(u"Projet Final" )
- Af1=Label(Fen1, text= u"Bonjour, vous allez maintenant pouvoir commencer le jeu de Manon et Zoémie. Etes-vous prêt ?" ) #Présentation
- Af2=Label(Fen1, text="" ) #Enoncé
- Af3=Label(Fen1, text="" ) #Rép1
- Af4=Label(Fen1, text="" ) #Rép2
- Af5=Label(Fen1, text="" ) #Rép3
- Af6=Label(Fen1, text="Quelle est votre réponse ?" )
- Af7=Label(Fen1, text="" ) # On l'utilisisera pour dire bonne ou mauvaise réponse.
- Ent1=Entry(Fen1) #Le joueur y rentrera sa réponse
- n=0 #Compteur du nombre de click sur le bout1
- k=1 #Compteur des questions
- def ma_commande12():
- global n
- global k
- #verification que l'index ne sorte pas de la liste
- if k-1<len(listOfQuestions):
- questionCourante = listOfQuestions[k-1]
- n=n+1 # Le compteur de click augmentera à chaque click, ou à chaque fois que la commande est éxecutée !
- if n==1: # APrès le premier click :
- Af1.configure ( text=u"Veuillez répondre en entrant la lettre correspondant à votre choix." )
- Bout1.configure(text=u"Ok" )
- elif n==2: # Après le deuxième click le jeu commence.
- Af1.pack_forget() #L'affichage 1 ne sera plus utile.
- Af2.pack() # On affiche l'énoncé des questions.
- Af3.pack()
- Af4.pack()
- Af5.pack()
- Af6.pack()
- Ent1.pack() # On affiche l'endroit où le joueur rentrera sa réponse
- Bout1.configure(text=u"Valider ma réponse." ) # Le bouton 1 vérifiera dorénavant la justesse de la réponse
- Af2.configure ( text=u"Question "+str(k) + " : "+questionCourante.enonce # Affichage des réponses.
- )
- Af3.configure ( text=u"Réponse A : "+
- questionCourante.rep1)
- Af4.configure ( text=u"Réponse B : "+
- questionCourante.rep2)
- Af5.configure ( text=u"Réponse C : "+
- questionCourante.rep3)
- else: # A chaque fois que le joueur clickera sur le bouton 1, la réponse du joueur sera vérifiée.
- repjoueur=Ent1.get() #On enregistre la réponse sous un autre nom qui nous permettra de meux la reconnaitre.
- repjoueur = repjoueur.upper() # Ce que rentre le joueur est mis en majuscule.
- if repjoueur==questionCourante.repjuste:
- Af7.pack()
- Af7.configure(text=u"Bonne réponse ! vous pouvez passer la question suivante" )
- Bout2.pack() # LE bouton permettant de passer à la question suivante apparait.
- else :
- Af7.pack()
- Af7.configure(text=u"Mauvaise réponse ! Vous avez répondu "+repjoueur+u" alors que la bonne réponse était la "+questionCourante.repjuste)
- Bout2.pack()
- def ma_commande22 (): # Commande pour paser à la question suivante.
- global k
- k=k+1 #On augmente le compteur de question.
- #verification que l'index ne sorte pas de la liste
- if k-1<len(listOfQuestions):
- questionCourante = listOfQuestions[k-1]
- Ent1.delete(0,END)
- Af2.configure ( text=u"Question "+str(k)+ # On affiche la question suivante.
- " : " + questionCourante.enonce)
- Af3.configure ( text=u"Réponse A : "
- + questionCourante.rep1)
- Af4.configure ( text=u"Réponse B : "
- + questionCourante.rep2)
- Af5.configure ( text=u"Réponse C : "
- + questionCourante.rep3)
- Bout2.pack_forget() #Le bouton disparait.
- else:
- #fin des questions on ferme la fenetre
- Fen1.destroy()
- Bout1=Button(Fen1,text=u"Oui",command=ma_commande12)
- Bout2=Button(Fen1,text=u"Question Suivante",command=ma_commande22)
- Af1.pack()
- Af2.pack_forget()
- Af3.pack_forget()
- Af4.pack_forget()
- Af5.pack_forget()
- Af6.pack_forget()
- Ent1.pack_forget()
- Bout1.pack()
- Af7.pack_forget()
- Bout2.pack_forget()
- Fen1.mainloop()
|
Message édité par honrisse le 01-03-2014 à 23:19:55
|