QCM avec tkinter
Fermé
man0n
-
Modifié par dsy73 le 1/03/2014 à 19:22
davs63 Messages postés 8 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 4 mars 2014 - 4 mars 2014 à 09:53
davs63 Messages postés 8 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 4 mars 2014 - 4 mars 2014 à 09:53
A voir également:
- Faire un qcm en python
- Citizen code python avis - Accueil - Outils
- Ce programme est écrit en python ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Qcm itil v4 corrigé pdf - Forum Études / Formation High-Tech
2 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 1/03/2014 à 21:11
Modifié par gravgun le 1/03/2014 à 21:11
'lut, quel bazar ce code, où est passé l'indentation? M'enfin elle se devine assez facilement, donc ça va.
Donc, ce
Ces propriétés sont, je présume, une partie d'une liste de questions, or je ne la vois nulle part décrit d'ailleurs; ainsi faudrait-il la déclarer, exemple:
Et ensuite on s'en sert:
Pour accéder à la question k, on utilise des crochets, car Q est une liste. Et entre crochets, on mets une variable numérique entière (pas décimale, ni de représentation en caractères). Et pour les parties de la question, de même mais avec le nom de la propriété.
from human import idiocy
del idiocy
Donc, ce
Q str(k), tu le sors d'où? Si le Q est censé être affiché, c'est entre guillemets qu'il doit être. Après,
str(k)donne sous forme de caractères le numéro de la question; et tu tentes d'utiliser les propriétés
.enonceet
.rep1, .rep2, .rep3dessus...
Ces propriétés sont, je présume, une partie d'une liste de questions, or je ne la vois nulle part décrit d'ailleurs; ainsi faudrait-il la déclarer, exemple:
Q = [{'enonce': "De quelle couleur est le cheval blanc d'Henri IV?", 'rep1': "Blanc", 'rep2': "Noir", 'rep3': "Gris", 'repjuste': 1}, {'enonce': "Quand le feu est rouge, tu fais quoi?", 'rep1': "J'appuie sur le champignon!", 'rep2': "J'menfou!", 'rep3': "Je freine comme un fou", 'repjuste': 2}]
Et ensuite on s'en sert:
Af2.configure ( text=u"Question"+str(k)+": "+Q[k]["enonce"]) Af3.configure ( text=u"Réponse A : "+Q[k]["rep1"]) Af4.configure ( text=u"Réponse B : "+Q[k]["rep2"]) Af5.configure ( text=u"Réponse C :"+Q[k]["rep3"])
Pour accéder à la question k, on utilise des crochets, car Q est une liste. Et entre crochets, on mets une variable numérique entière (pas décimale, ni de représentation en caractères). Et pour les parties de la question, de même mais avec le nom de la propriété.
from human import idiocy
del idiocy
[CODE] # -*- coding: cp1252 -*-
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"")
questions = [] #on crée une liste
def ma_commande2():
q=Question(Ent1.get(), Ent2.get(), Ent3.get(), Ent4.get(), Ent5.get()
questions.append(q)
Ent1.delete(0,END)
Ent2.delete(0,END)
Ent3.delete(0,END)
Ent4.delete(0,END)
Ent5.delete(0,END)
q=questions[k]
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
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()/CODE
Ceci est un autre programme censé etre le debut des que le premier marchera ou Q est defini c'est une classe.
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"")
questions = [] #on crée une liste
def ma_commande2():
q=Question(Ent1.get(), Ent2.get(), Ent3.get(), Ent4.get(), Ent5.get()
questions.append(q)
Ent1.delete(0,END)
Ent2.delete(0,END)
Ent3.delete(0,END)
Ent4.delete(0,END)
Ent5.delete(0,END)
q=questions[k]
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
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()/CODE
Ceci est un autre programme censé etre le debut des que le premier marchera ou Q est defini c'est une classe.
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
1 mars 2014 à 21:07
1 mars 2014 à 21:07
coding: cp1252
Je vais te tuer.
Je vais te tuer.
je vais tenter de remettre le code attends
# -*- coding: cp1252 -*-
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"""
def __init__(self, enonce="", rep1="", rep2="", rep3="", repjuste=""):
self.enonce = enonce
self.rep1 = rep1
self.rep2 = rep2
self.rep3 = rep3
self.repjuste = repjuste
# end def
# end class Question
#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)
# 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="red",
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 :".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 numéro A :").pack()
Ent_rep1 = Entry(Fen1)
Ent_rep1.pack()
Af3=Label(Fen1,text=u"Réponse numéro B :").pack()
Ent_rep2 = Entry(Fen1)
Ent_rep2.pack()
Af4=Label(Fen1,text=u"Réponse numéro C :").pack()
Ent_rep3 = Entry(Fen1)
Ent_rep3.pack()
Af5=Label(Fen1,text=u"Veuillez saisir la lettre de la bonne réponse :").pack()
Ent_repjuste = Entry(Fen1)
Ent_repjuste.pack()
# je récupère les données des zones de saisie
def verifier():
enonce = Ent_enonce.get()
rep1 = Ent_rep1.get()
rep2 = Ent_rep2.get()
rep3 = Ent_rep3.get()
repjuste = entree_repjuste.get()
# formulaire incomplet
if enonce=="" or rep1=="" or rep2=="" or rep3=="" or repjuste=="":
# masquer le bouton d'enregistrement
bouton_enregistrer.pack_forget()
Af6.configure(text= u"Vous n'avez pas rempli toutes les cases" )
# tout est rempli:
else:
# montrer le bouton d'enregistrement
bouton_enregistrer.pack()
# end if
# end def
# Enregistrement des données
def enregistrer():
global nb_question
# 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(),
repjuste = Ent_repjuste.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_repjuste.delete(0, END)
# je passe à la question suivante
nb_question += 1
#mise a jour de l'étiquette
message_numero_question.set(u"Question numéro {}".format(nb_question))
# masquer le bouton d'enregistrement
bouton_enregistrer.pack_forget()
# end def
#fermeture de la fenêtre
def fermer():
enonce = Ent_enonce.get()
Question.enonce = enonce
rep1 = Ent_rep1.get()
Question.rep1 = rep1
rep2 = Ent_rep2.get()
Question.rep2 = rep2
rep3 = Ent_rep3.get()
Question.rep3 = rep3
repjuste = Ent_repjuste.get()
Question.repjuste = repjuste
print"last question=", Question
Q = Question(Question.enonce, Question.rep1, Question.rep2, Question.rep3, Question.repjuste)
liste_Questions.append(Q)
Fen1.destroy()
#End def
# création des boutons
# bouton 'Vérifier'
bouton_verifier = Button(Fen1,text=u"Vérifier",command=verifier,)
bouton_verifier.pack()
# bouton 'Enregistrer'
bouton_enregistrer = Button(Fen1,text=u"Enregistrer ma question",command=enregistrer)
#On ne l'affiche pas immediatement
# bouton 'Fermer'
bouton_fermer = Button(Fen1ntext=u"Fermer la fenêtre",command=fermer)
bouton-fermer.pack()
fenetre.mainloop()
#affiche les questions sauvegardees dans la liste
for index in range(len(liste_question)):
print liste_questions[index]
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
2 mars 2014 à 17:16
2 mars 2014 à 17:16
Nan je ne parlais pas de ton code en soi, mais du fait que tu utilises un encodage de merde; il serait temps de se mettre à l'Unicode/UTF-8. Télécharges-toi un vrai éditeur de texte (Notepad++ par ex) si ton éditeur actuel ne le gères pas; réencodes la source et met
codepage: utf-8