J'ai créé une fenetre via tkinter pour enregistrer les questions de mon QCM et pouvoir ensuite les reeutilisé pour creer mon jeu sur pygame. Seulement les données que j'entre ne s'ecrivent pas dans le fichier texte: je ne sais pas comment faire...

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
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