import json
import tkinter
from tkinter import *
import random
# questions = [
# "Quelle est la capitale du maroc ",
# "Laquelle des fonctions suivantes prend une entrée console en Python ? ?",
# "Laquelle des villes suivantes est la capitale économique du Maroc ?",
# "Lequel des éléments suivants doit exécuter un code Python?",
# "La mosquée hassan 2 est situé dans ?",
# " La méthode append ajoute une valeur une liste liste au?",
# "Laquelle des villes suivantes n’est pas une ville côtière du Maroc ?",
# "Lequel des éléments suivants est exécuté dans le navigateur (côté client)?",
# "Lequel des mots-clés suivants est utilisé pour créer une fonction dans Python?",
# "Pour déclarer une variable globale en python, nous utilisons le mot-clé ?",
# ]
# answers_choice = [
# ["Fes","Casablanca","Rabat","Safi",],
# ["get()","input()","gets()","scan()",],
# ["Rabat","fes","tanger","marrakech",],
# ["TURBO C","Py Interpreter","Notepad","IDE",],
# ["Fes","Agadir","Casablanca","Tanger",],
# ["custom location","end","center","beginning",],
# ["Ifrane","Oualidia","Rabat","Casablanca",],
# ["perl","css","python","java",],
# ["function","void","fun","def",],
# ["all","var","let","global",],
# ]
#charger les questions et les réponses du fichier data.json que vous avez créée avant
with open('./data.json', encoding="utf8") as f:
donnees = json.load(f)
# convertit le dictionnaire en listes de questions et de choix_reponse
questions = [valeur for valeur in donnees[0].values()]
choix_reponse = [valeur for valeur in donnees[1].values()]
reponses = [1,1,1,1,3,1,0,1,3,3]
reponse_utilisateur = []
indexes = []
def generer():
global indexes
while(len(indexes) < 5):
x = random.randint(0,9)
if x in indexes:
continue
else:
indexes.append(x)
def montrer_resultat(score):
lblQuestion.destroy()
reponse_1.destroy()
reponse_2.destroy()
reponse_3.destroy()
reponse_4.destroy()
label_image = Label(
root,
background = "#ffffff",
border = 0,
)
label_image.pack(pady=(50,30))
label_resultat_text = Label(
root,
font = ("Consolas",20),
background = "#ffffff",
)
label_resultat_text.pack()
if score >= 20:
image = PhotoImage(file="great.png")
label_image.configure(image=image)
label_image.image = image
label_resultat_text.configure(text="Vous êtes excellent !!")
elif (score >= 10 and score < 20):
image = PhotoImage(file="ok.png")
label_image.configure(image=image)
label_image.image = image
label_resultat_text.configure(text="vous pouvez faire mieux !!")
else:
image = PhotoImage(file="bad.png")
label_image.configure(image=image)
label_image.image = image
label_resultat_text.configure(text="vous devez faire plus d'effort !!")
def calculer():
global indexes,reponse_utilisateur,reponses
x = 0
score = 0
for i in indexes:
if reponse_utilisateur[x] == reponses[i]:
score = score + 5
x += 1
print(score)
montrer_resultat(score)
ques = 1
def selected():
global radiovar,reponse_utilisateur
global lblQuestion,reponse_1,reponse_2,reponse_3,reponse_4
global ques
x = radiovar.get()
reponse_utilisateur.append(x)
radiovar.set(-1)
if ques < 5:
lblQuestion.config(text= questions[indexes[ques]])
reponse_1['text'] = choix_reponse[indexes[ques]][0]
reponse_2['text'] = choix_reponse[indexes[ques]][1]
reponse_3['text'] = choix_reponse[indexes[ques]][2]
reponse_4['text'] = choix_reponse[indexes[ques]][3]
ques += 1
else:
# print(indexes)
# print(user_answer)
calculer()
commencer_quiz()
def commencer_quiz():
global lblQuestion,reponse_1,reponse_2,reponse_3,reponse_4
lblQuestion = Label(
root,
text = questions[indexes[0]],
font = ("Consolas", 16),
width = 500,
justify = "center",
wraplength = 400,
background = "#ffffff",
)
lblQuestion.pack(pady=(100,30))
global radiovar
radiovar = IntVar()
radiovar.set(-1)
reponse_1 = Radiobutton(
root,
text = choix_reponse[indexes[0]][0],
font = ("Times", 12),
value = 0,
variable = radiovar,
command = selected,
background = "#ffffff",
)
reponse_1.pack(pady=5)
reponse_2 = Radiobutton(
root,
text = choix_reponse[indexes[0]][1],
font = ("Times", 12),
value = 1,
variable = radiovar,
command = selected,
background = "#ffffff",
)
reponse_2.pack(pady=5)
reponse_3 = Radiobutton(
root,
text = choix_reponse[indexes[0]][2],
font = ("Times", 12),
value = 2,
variable = radiovar,
command = selected,
background = "#ffffff",
)
reponse_3.pack(pady=5)
reponse_4 = Radiobutton(
root,
text = choix_reponse[indexes[0]][3],
font = ("Times", 12),
value = 3,
variable = radiovar,
command = selected,
background = "#ffffff",
)
reponse_4.pack(pady=5)
def start_est_presse():
label_image.destroy()
label_text.destroy()
lblInstruction.destroy()
lblRules.destroy()
btnStart.destroy()
generer()
commencer_quiz()
root = tkinter.Tk()
root.title("Quiz")
root.geometry("700x600")
root.config(background="#ffffff")
root.resizable(0,0)
image_1 = PhotoImage(file="j.png")
label_image = Label(
root,
image = image_1,
background = "#ffffff",
)
label_image.pack(pady=(40,0))
label_text = Label(
root,
text = "Quiz",
font = ("Comic sans MS",24,"bold"),
background = "#ffffff",
)
label_text.pack(pady=(0,50))
image_2 = PhotoImage(file="images.png")
btnStart = Button(
root,
image = image_2,
relief = FLAT,
border = 0,
command = start_est_presse,
)
btnStart.pack()
lblInstruction = Label(
root,
text = "Lisez les règles et \nCliquez sur Démarrer une fois que vous êtes prêt",
background = "#ffffff",
font = ("Consolas",14),
justify = "center",
)
lblInstruction.pack(pady=(10,100))
lblRules = Label(
root,
text = "Ce quiz contient 10 questions \nVous aurez 20 secondes pour résoudre une question \nUne fois que vous aurez sélectionné un bouton radio qui sera un choix final \n donc penser avant de sélectionner",
width = 100,
font = ("Times",14),
background = "#000000",
foreground = "#FACA2F",
)
lblRules.pack()
root.mainloop()