QCM avec Tkinter
Fantoume09
Messages postés
8
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous,
Je suis débutante avec Python, et j'aimerai créer un QCM.
Voici mon programme avec python, qui marche dans le terminal :
J'aimerai maintenant l'exploiter avec Tkinter :
J'ai un problème avec les Vrai/Faux qui ne s'affichent pas.
Et j'aimerai que la question précédente s'efface avant de passer à la suivante, mais je ne trouve pas la commande pour faire ça.
J'espère que vous pourrez m'aider.
Je suis débutante avec Python, et j'aimerai créer un QCM.
Voici mon programme avec python, qui marche dans le terminal :
import random
#Questions Globales # la repetition correspond a la bonne reponse
Question = [["Quelle est la capitale de la France ?","A :Nantes","B :Paris","C :Marseilles","B :Paris"],
["Quel est le plus grand ocean du monde ? ","A :Le Pacifique","B :L'Atlantique","C :La mer Noire","A :Le Pacifique"],
["Avec quel pays la France n'a t-elle aucune frontiere ?","A :Autriche","B :Belgique","C :Monaco","A :Autriche"],
["Dans quelle ville ce trouve le pont Vasco de Gamma ?","A :Madrid","B :Barcelone","C :Lisbonne","C :Lisbonne"],
["Quelle est la capitale des Phillipines ?","A :Manille","B :Jakarta","C :Wellington","A :Manille"] ,
["Quel departement francais a pour code geographique le 16 ? ","A :Le Cantal","B :La Charente","C :L'Aude","B :La Charente"],
["Dans quel pays se trouve Phnom Penh ?","A :Chine","B :Coree du Nord","C :Cambodge","C :Cambodge"],
["Les habitants de Jerusalem se nomment les ?","A :Yerousalemiens","B :Hierosolymitains","C :Jerusalemistes","B :Hierosolymitains"],
[" La France compte environ ","A :37 256 communes ?","B :25 894 communes ? ","C :36 681 communes ?","C :36 681 communes ?"],
["La superficie du Bandgladesh est de ? ","A :150 254 Km2","B :147 570 km2","C :80 456 km2","B :147 570 km2"]]
qtal = Question #On enleve des elements de la liste pour ne pas repeter la question.
x = 0
while x < 10 :
lQst = random.choice(qtal) #On prend une question
qtal.remove(lQst) #Qu'on enleve de notre liste de questions
print(lQst[0])
print(lQst[1]) #Et ses 3 reponses
print(lQst[2])
print(lQst[3])
lRep = ""
lRep != ["A","B","C"]
lRep = input("Votre reponse: ").upper() #On redemande
if lRep == "A": #On récupere le choix
lChx = lQst[1]
if lRep == "B":
lChx = lQst[2]
if lRep == "C":
lChx = lQst[3]
if lChx == lQst[4]: #rpvrai
print("-- VRAI --")
else: #Sinon
print("-- FAUX --")
print(" La bonne reponse était : " + lQst[4] )
print("\n Nouvelle question : \n")
x += 1
x = 10
print(" Fin du jeu ! " )
J'aimerai maintenant l'exploiter avec Tkinter :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
import random
fenetre = Tk()
fenetre.title("QCM")
lChx = 0
Question = [["Quelle est la capitale de la France ?","A : Nantes","B : Paris","C : Marseilles","B : Paris"],
["Quel est le plus grand ocean du monde ? ","A : Le Pacifique","B : L'Atlantique","C : La mer Noire","A : Le Pacifique"],
["Avec quel pays la France n'a t-elle aucune frontière ?","A : Autriche","B : Belgique","C : Monaco","A : Autriche"],
["Dans quelle ville ce trouve le pont Vasco de Gamma ?","A : Madrid","B : Barcelone","C : Lisbonne","C : Lisbonne"],
["Quelle est la capitale des Phillipines ?","A : Manille","B : Jakarta","C : Wellington","A : Manille"] ,
["Quel département français a pour code géographique le 16 ? ","A : Le Cantal","B : La Charente","C : L'Aude","B : La Charente"],
["Dans quel pays se trouve Phnom Penh ?","A : Chine","B : Corée du Nord","C : Cambodge","C : Cambodge"],
["Les habitants de Jerusalem se nomment les ?","A : Yerousalemiens","B : Hierosolymitains","C : Jerusalemistes","B : Hierosolymitains"],
[" La France compte environ ","A : 37 256 communes ?","B : 25 894 communes ? ","C : 36 681 communes ?","C : 36 681 communes ?"],
["La superficie du Bandgladesh est de ? ","A : 150 254 Km2","B : 147 570 km2","C : 80 456 km2","B : 147 570 km2"]]
def RepA (self):
global lChx
if lRep == "A": #On récupere le choix
lChx = lQst[1]
def RepB (self):
global lChx
if lRep == "B": #On récupere le choix
lChx = lQst[2]
def RepC (self):
global lChx
if lRep == "C": #On récupere le choix
lChx = lQst[3]
def verification():
if lChx == lQst[4]: #rpvrai
true = Label(fenetre, text = "--VRAI--")
true.pack()
else : #Sinon
false = Label(fenetre, text = "--FAUX--")
false.config(text = " La bonne réponse était - " + lQst[4] )
false.pack()
def selection() :
selection = "Vous avez choisi la réponse " + str(value.get())
sel = Label(fenetre, text = selection)
sel.pack()
qtal = Question #On enlève des éléments de la liste pour ne pas répéter la question.
new = Label(fenetre, text = "\n Nouvelle question : \n")
new.pack()
x = 0
while x < 10 :
lQst = random.choice(qtal) #On prend une question
qtal.remove(lQst) #Qu'on enlève de notre liste de questions
value = StringVar()
question = Label(fenetre, text = lQst[0])
question.pack()
bouton1 = Radiobutton(fenetre, text = lQst[1], variable = value, value = 'A', command = selection)
bouton1.deselect()
bouton2 = Radiobutton(fenetre, text = lQst[2], variable = value, value = 'B', command = selection)
bouton2.deselect()
bouton3 = Radiobutton(fenetre, text = lQst[3], variable = value, value = 'C', command = selection)
bouton3.deselect()
bouton1.pack()
bouton2.pack()
bouton3.pack()
valider = Button(fenetre, text="Valider", command = verification)
valider.pack()
fermer = Button(fenetre, text="Fermer", command = fenetre.quit)
fermer.pack()
end = Label(fenetre, text = " Fin du jeu ! ")
end.pack()
fenetre.mainloop()
J'ai un problème avec les Vrai/Faux qui ne s'affichent pas.
Et j'aimerai que la question précédente s'efface avant de passer à la suivante, mais je ne trouve pas la commande pour faire ça.
J'espère que vous pourrez m'aider.