Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- import sqlite3
- import time
- from PIL import Image
- import random
- class Quiz:
- def __init__(self,root):
- self.root = root
- self.root.title("Main menu")
- register_but = Button(root,text = "Register",command = self.Register_menu).pack()
- addquestion_but = Button(root,text = "Add question",command = self.Login).pack()
- quiz_but = Button(root,text = "Run quiz",command=self.Menu_quiz).pack()
- def insert(self,var,var7_u,image_entry,answer_entry):
- myCategory=var.get()
- #variables=[self.var7_u.get(),self.var7_s,self.var8_s,self.var8_u,self.var9_s,self.var9_u,self.var10_s,self.var10_u,self.var11_s,self.var11_u]
- question_path=image_entry.get()
- answer_path=answer_entry.get()
- variables=[var7_u.get()]
- print(question_path)
- print(myCategory)
- print(answer_path)
- print(variables)
- conn = sqlite3.connect("information.db")
- c = conn.cursor()
- c.execute("CREATE TABLE IF NOT EXISTS Level (year_setId TEXT , year INT,dif TEXT)")
- c.execute("CREATE TABLE IF NOT EXISTS Questions(questionId INTEGER PRIMARY KEY AUTOINCREMENT,path_question TEXT,path_answer TEXT) ")
- c.execute("CREATE TABLE IF NOT EXISTS Topics(topicId INT,topic TEXT)")
- c.execute("""CREATE TABLE IF NOT EXISTS Main(year_set_id id,questionId TEXT,topic TEXT,
- FOREIGN KEY(year_set_id) REFERENCES Level(year_setId ),FOREIGN KEY(questionId)REFERENCES Questions(questionId),FOREIGN KEY(topic)REFERENCES Topics(topic))""")
- c.execute("SELECT year_setID FROM LEVEL")
- result_yearset = c.fetchone()
- id_yearset= result_yearset[0] + 1
- if myCategory=="Algebra":
- id_topic=1
- elif myCategory=="Trigonometry":
- id_topic=2
- elif myCategory=="Calculus":
- id_topic=3
- yearsetid= str(year)+str(dif)
- c.execute("INSERT INTO Level(year_setId)VALUES(?)",[yearsetid])
- c.execute("INSERTO INTO Topics(:topicID, :topic)",{":topicID":id_topic,"topic":myCategory})
- c.execute("INSERT INTO Questions(path_question,path_answer) VALUES(?,?)",[question_path,answer_path])
- self.quit()
- conn.commit()
- def Register_menu(self):
- root = Tk()
- self.root=root
- self.root.title("Register menu")
- username_label = Label(root,text = "Username").grid(row=0)
- self.username_entry = Entry (root)
- self.username_entry.grid(row=0,column=1)
- password_label = Label(root,text = "Password").grid(row=1)
- self.password_entry = Entry (root)
- self.password_entry.grid(row=1,column=1)
- register_but = Button(root,text = "Register",command=lambda:[self.Register(self.username_entry,self.password_entry)]).grid(row=2)
- quit_but = Button(root,text="Quit",command=self.quit).grid(row=2,column=1)
- def Register(self,username_entry,password_entry):
- username_entry = username_entry.get()
- password_entry = password_entry.get()
- print(username_entry,password_entry)
- conn = sqlite3.connect("Profiles.db")
- c = conn.cursor()
- c.execute("CREATE TABLE IF NOT EXISTS Username(usernameID INTEGER PRIMARY KEY AUTOINCREMENT,username text,password text)")
- c.execute("INSERT INTO Username(username,password)VALUES(?,?)",[username_entry,password_entry])
- conn.commit()
- def Login(self):
- root = Tk()
- root.title("Login")
- username_label = Label(root,text = "Username").grid(row=0)
- self.username_entry = Entry (root)
- self.username_entry.grid(row=0,column=1)
- password_label = Label(root,text = "Password").grid(row=1)
- self.password_entry = Entry (root,show="*")
- self.password_entry.grid(row=1,column=1)
- Login_but = Button(root,text = "Login",command =lambda:[self.check(self.username_entry,self.password_entry)]).grid(row=2)
- def check(self,username_entry,password_entry):
- username_get=username_entry.get()
- password_get=password_entry.get()
- conn = sqlite3.connect("Profiles.db")
- c = conn.cursor()
- c.execute("SELECT * FROM Username WHERE username = ? AND password= ?",[username_get,password_get])
- results = c.fetchall()
- if results:
- self.Addquestion()
- else:
- messagebox.showinfo("Log in","Incorrect username or password")
- def Addquestion(self):
- root = Tk()
- self.root=root
- self.root.title("Add question menu")
- var = StringVar(root)
- self.var=var
- var.set("---")
- question_label = Label(root,text="What is the path of the question?").grid(row=0)
- self.image_entry = Entry(root)
- self.image_entry.grid(row=0,column=1)
- answer_label = Label(root,text="What is the path of the answer?").grid(row=1)
- self.answer_entry = Entry(root)
- self.answer_entry.grid(row=1,column=1)
- choices=["Algebra","Trigonometry","Calculus"]
- topic_label = Label(root,text = "Topics").grid(row=2)
- topic_options = OptionMenu(root,var,*choices).grid(row=2,column=1)
- upper_label = Label(root,text="Upper").grid(row=4,column=1)
- standard_label = Label(root,text="Standard").grid(row=4,column=3)
- self.var7_u = IntVar()
- var7_u=self.var7_u
- var7_s = IntVar()
- self.var7_s=var7_s
- year7_label = Label(root,text="Y7").grid(row=5)
- self.year7_upper_check = Checkbutton(root,variable=self.var7_u,onvalue=1).grid(row=5,column=1)
- self.year7_standard_check = Checkbutton(root,variable=var7_s).grid(row=5,column=3)
- var8_u = IntVar()
- self.var8_u=var8_u
- var8_s = IntVar()
- self.var8_s=var8_s
- year8_label = Label(root,text="Y8").grid(row=6)
- year8_upper_check = Checkbutton(root,variable=var8_u).grid(row=6,column=1)
- year8_standard_check = Checkbutton(root,variable=var8_s).grid(row=6,column=3)
- var9_u = IntVar()
- self.var9_u=var9_u
- var9_s = IntVar()
- self.var9_s=var9_s
- year9_label = Label(root,text="Y9").grid(row=7)
- year9_upper_check = Checkbutton(root,variable=var9_u).grid(row=7,column=1)
- year9_standard_check = Checkbutton(root,variable=var9_s).grid(row=7,column=3)
- var10_u = IntVar()
- self.var10_u=var10_u
- var10_s = IntVar()
- self.var10_s=var10_s
- year10_label = Label(root,text="Y10").grid(row=8)
- year10_upper_check = Checkbutton(root,variable=var10_u).grid(row=8,column=1)
- year10_standard_check = Checkbutton(root,variable=var10_s).grid(row=8,column=3)
- var11_u = IntVar()
- self.var11_u=var11_u
- var11_s = IntVar()
- self.var11_s=var11_s
- year11_label = Label(root,text="Y11").grid(row=9)
- year11_upper_check = Checkbutton(root,variable=var11_u).grid(row=9,column=1)
- year11_standard_check = Checkbutton(root,variable=var11_s).grid(row=9,column=3)
- submit_but = Button(root,text="Submit",command=lambda:[self.insert(self.var,self.var7_u,self.image_entry,self.answer_entry)]).grid(row=10)
- quit_but = Button(root,text="Quit",command=self.quit).grid(row=10,column=1)
- root.mainloop()
- def Menu_quiz(self):
- root = Tk()
- root.title("Quiz menu")
- var = StringVar(root)
- var.set("---")
- self.var=var
- var2=StringVar(root)
- var2.set("---")
- self.var2=var2
- topic_label = Label(root,text = "What topic do you want the questions to be about?").grid(row=0)
- topic_options = OptionMenu(root, var, "Algebra", "Calculus", "Trigometry").grid(row=0,column=1)
- year_set_label = Label(root,text = "What year and set do you want the questions for?").grid(row=1)
- year_set_options = OptionMenu(root, var2, "Year 7 standard", "Year 7 higher","Year 8 standard", "Year 8 higher","Year 9 standard", "Year 9 higher","Year 10 standard", "Year 10 higher","Year 11 standard", "Year 11 higher").grid(row=1,column=1)
- time_label = Label(root,text="How much time do you want each question to appear for? (In seconds)").grid(row=2)
- self.time_entry = Entry(root)
- self.time_entry.grid(row=2,column=1)
- questions_label = Label(root,text="How many questions do you want the quiz to have?").grid(row=3)
- self.question_entry = Entry(root)
- self.question_entry.grid(row=3,column=1)
- run_quiz = Button(root,text="Run quiz",command=lambda:[self.quiz(var,self.var2,self.time_entry,self.question_entry)]).grid(row=4)
- def quiz(self,var,var2,time_entry,question_entry):
- count=0
- count_a=0
- topic=var.get()
- year_set=var2.get()
- seconds=time_entry.get()
- questions=question_entry.get()
- conn = sqlite3.connect("information.db")
- c = conn.cursor()
- c.execute("SELECT questionId FROM Main WHERE topic=? and year_setId=?",[topic,year_set])
- data = [c.fetchall()]
- random.shuffle(data)
- for item in data:
- c.execute("SELECT path_answer FROM Questions WHERE questionId=?", [item])
- answerlist=[row[0] for row in c.fetchall()]
- c.execute("SELECT path_question FROM Question WHERE questionId=?"[item])
- questionlist=[row[0] for row in c.fetchall()]
- for record in questionlist:
- image = Image.open(record)
- image.show()
- time.sleep(int(seconds))
- count=count+1
- if count==int(questions):
- for path in answerlist:
- image_a = Image.open(path)
- image_a.show()
- count_a=count_a+1
- if count_a==int(questions):
- sys.exit()
- def quit(self):
- self.root.destroy()
- if __name__ == "__main__":
- root=Tk()
- app = Quiz(root)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement