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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
| from Tkinter import *
class Question:
"""Classe définissant une question :
- son énoncé
- sa réponse 1
- sa réponse 2
- sa réponse 3
- sa réponse juste
- sa justification"""
def __init__(self, enonce="", rep1="", rep2="", rep3="", repjuste="", justy=""):
self.enonce = enonce
self.rep1 = rep1
self.rep2 = rep2
self.rep3 = rep3
self.repjuste = repjuste
self.justy = justy
# end def
# end class Question
#permet d'afficher avec print
# def __str__(self):
# return "enonce=%s ; rep1=%s ; rep2=%s ; rep3=%s ; repjuste=%s; justy=%s" % (self.enonce, self.rep1, self.rep2, self.rep3, self.repjuste, self.justy)
# création de la fenetre principale pour l'enregistrement de question/réponses
Fen1 = Tk()
# titre donné à la fenêtre
Fen1.title(u"Création question")
# création d'un compteur du nombre de questions
nb_question = 1
# création de la liste qui servira à stocker les questions
liste_questions = list()
message_numero_question= StringVar()
# création d'une étiquette qui indiquera le numéro de la question
message_numero_question.set(u"Question numéro {}".format(nb_question))
Label(Fen1,textvariable = message_numero_question,
bg="pink",
fg="white",
font="serif 12 bold italic").pack(expand=1, fill=X)
#Pour l'énoncé
Af1=Label(Fen1,text=u"Veuillez entrer l'énoncé de votre question :")
Af1.pack()#affichage immédiat
# zone de saisie de l'énoncé
Ent_enonce = Entry(Fen1)
#affichage immédiat avec .pack()
Ent_enonce.pack()
#Pour les réponses
Af2=Label(Fen1,text=u"Réponse A :")
Af2.pack()
Af2.configure
Ent_rep1 = Entry(Fen1)
Ent_rep1.pack()
Af3=Label(Fen1,text=u"Réponse B :")
Af3.pack()
Af3.configure
Ent_rep2 = Entry(Fen1)
Ent_rep2.pack()
Af4=Label(Fen1,text=u"Réponse C :")
Af4.pack()
Af4.configure
Ent_rep3 = Entry(Fen1)
Ent_rep3.pack()
Af5=Label(Fen1,text=u"Veuillez cocher la case correspopndant à votre réponse :")
Af5.pack()
Af5.configure
#création d'une zone "invisible"
Af6=Label(Fen1,text=u"")
Af6.pack_forget()
# récupération des données des zones de saisie
def verifier():
enonce = Ent_enonce.get()
rep1 = Ent_rep1.get()
rep2 = Ent_rep2.get()
rep3 = Ent_rep3.get()
justy = Ent_justy.get()
# formulaire incomplet
if enonce=="" or rep1=="" or rep2=="" or rep3=="" or justy=="" or cocher.get() == 0:
# masquer le bouton d'enregistrement
bouton_enregistrer.pack_forget()
Af6.configure(text= u"Vous n'avez pas rempli toutes les cases" )
Af6.pack()
# tout est rempli:
else:
# montrer le bouton d'enregistrement
bouton_enregistrer.pack()
Af6.configure(text=u"")
Af6.pack_forget()
# end if
# end def
# Enregistrement des données
def enregistrer():
global nb_question, liste_questions
# enregistrement des questions dans la liste.
liste_questions.append(Question(enonce = Ent_enonce.get(),
rep1 = Ent_rep1.get(),
rep2 = Ent_rep2.get(),
rep3 = Ent_rep3.get(),
justy = Ent_justy.get(),
repjuste=cocher.get()))
# effacement des zones de saisie
Ent_enonce.delete(0, END)
Ent_rep1.delete(0, END)
Ent_rep2.delete(0, END)
Ent_rep3.delete(0, END)
Ent_justy.delete(0, END)
case_Invisible.select()
# je passe à la question suivante
nb_question += 1
#mise à jour de l'étiquette
message_numero_question.set(u"Question numéro {}".format(nb_question))
# masquer le bouton d'enregistrement
bouton_enregistrer.pack_forget()
#Quitter automatiquement au bout de 20 enregistrements
if nb_question == 5:
Fen1.quit()
Fen1.destroy()
#création d'un fichier pour enregister la liste sur l'ordinateur
fichier=open("QCM.txt","w")
for question in liste_questions:
fichier.write(("\n Enoncé: " + question.enonce +
"\n Rep1: " + question.rep1 +
"\n Rep2: " + question.rep2 +
"\n Rep3: " + question.rep3 +
"\n Rep Juste: " + str(question.repjuste)+
"\n Justification: " + question.justy))
fichier.close()
# end def
# création des boutons
cocher= IntVar()
case_A = Radiobutton(Fen1,text="Réponse A", variable=cocher, value=1)
case_A.pack()
case_B = Radiobutton(Fen1,text="Réponse B", variable=cocher, value=2)
case_B.pack()
case_C = Radiobutton(Fen1,text="Réponse C", variable=cocher, value=3)
case_C.pack()
case_Invisible = Radiobutton(Fen1,text="", variable=cocher, value=4)
#case justifier
Af7=Label(Fen1,text=u"Veuillez donner une justification :")
Af7.pack()
Af7.configure
Ent_justy = Entry(Fen1)
Ent_justy.pack()
# bouton 'Enregistrer'
bouton_enregistrer = Button(Fen1,text=u"Enregistrer",command=enregistrer)
# bouton 'Vérifier'
bouton_verifier = Button(Fen1,text=u"Vérifier",command=verifier)
bouton_verifier.pack()
#On ne l'affiche pas immediatement
Fen1.mainloop()
#affiche les questions sauvegardees dans la liste
for index in range(len(liste_questions)):
print liste_questions[index].enonce
print liste_questions[index].rep1
print liste_questions[index].rep2
print liste_questions[index].rep3
print liste_questions[index].repjuste
print liste_questions[index].justy |
Partager