QCM avec Tkinter

Fermé
Fantoume09 Messages postés 5 Date d'inscription samedi 27 novembre 2010 Statut Membre Dernière intervention 22 juin 2015 - 22 juin 2015 à 19:04
 Utilisateur anonyme - 29 juin 2015 à 11:28
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 :


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.

1 réponse

Utilisateur anonyme
29 juin 2015 à 11:28
Salut,

Les fonctions RepA, RepB et RepC ne sont jamais appelées. La variable lRep dans chacune de ces fonctions n'est pas défini.
0