Advertisement
Guest User

uyvouyv

a guest
May 6th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.58 KB | None | 0 0
  1. from tkinter import *
  2. import sqlite3
  3. import time
  4. from PIL import Image
  5. import random
  6.  
  7. class Quiz:
  8.     def __init__(self,root):
  9.         self.root = root
  10.         self.root.title("Main menu")
  11.         register_but = Button(root,text = "Register",command = self.Register_menu).pack()
  12.         addquestion_but = Button(root,text = "Add question",command = self.Login).pack()
  13.         quiz_but = Button(root,text = "Run quiz",command=self.Menu_quiz).pack()
  14.  
  15.        
  16.     def insert(self,var,var7_u,image_entry,answer_entry):
  17.         myCategory=var.get()
  18.         #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]
  19.         question_path=image_entry.get()
  20.         answer_path=answer_entry.get()
  21.         variables=[var7_u.get()]
  22.         print(question_path)
  23.         print(myCategory)
  24.         print(answer_path)
  25.         print(variables)
  26.        
  27.         conn = sqlite3.connect("information.db")
  28.         c = conn.cursor()
  29.         c.execute("CREATE TABLE IF NOT EXISTS Level (year_setId TEXT , year INT,dif TEXT)")
  30.         c.execute("CREATE TABLE IF NOT EXISTS Questions(questionId INTEGER PRIMARY KEY AUTOINCREMENT,path_question TEXT,path_answer TEXT) ")
  31.         c.execute("CREATE TABLE IF NOT EXISTS Topics(topicId INT,topic TEXT)")
  32.         c.execute("""CREATE TABLE IF NOT EXISTS Main(year_set_id id,questionId TEXT,topic TEXT,
  33.        FOREIGN KEY(year_set_id) REFERENCES Level(year_setId ),FOREIGN KEY(questionId)REFERENCES Questions(questionId),FOREIGN KEY(topic)REFERENCES Topics(topic))""")
  34.        
  35.         c.execute("SELECT year_setID FROM LEVEL")
  36.         result_yearset = c.fetchone()
  37.         id_yearset= result_yearset[0] + 1
  38.         if myCategory=="Algebra":
  39.             id_topic=1
  40.         elif myCategory=="Trigonometry":
  41.             id_topic=2
  42.         elif myCategory=="Calculus":
  43.             id_topic=3
  44.         yearsetid= str(year)+str(dif)
  45.         c.execute("INSERT INTO Level(year_setId)VALUES(?)",[yearsetid])
  46.         c.execute("INSERTO INTO Topics(:topicID, :topic)",{":topicID":id_topic,"topic":myCategory})
  47.         c.execute("INSERT INTO Questions(path_question,path_answer) VALUES(?,?)",[question_path,answer_path])
  48.         self.quit()
  49.        
  50.         conn.commit()
  51.  
  52.        
  53.  
  54.  
  55.     def Register_menu(self):
  56.         root = Tk()
  57.         self.root=root
  58.         self.root.title("Register menu")
  59.  
  60.         username_label = Label(root,text = "Username").grid(row=0)
  61.         self.username_entry = Entry (root)
  62.         self.username_entry.grid(row=0,column=1)
  63.  
  64.         password_label = Label(root,text = "Password").grid(row=1)
  65.         self.password_entry = Entry (root)
  66.         self.password_entry.grid(row=1,column=1)
  67.  
  68.         register_but = Button(root,text = "Register",command=lambda:[self.Register(self.username_entry,self.password_entry)]).grid(row=2)
  69.         quit_but = Button(root,text="Quit",command=self.quit).grid(row=2,column=1)        
  70.  
  71.  
  72.     def Register(self,username_entry,password_entry):
  73.         username_entry = username_entry.get()
  74.         password_entry = password_entry.get()
  75.        
  76.         print(username_entry,password_entry)
  77.         conn = sqlite3.connect("Profiles.db")
  78.         c = conn.cursor()
  79.        
  80.         c.execute("CREATE TABLE IF NOT EXISTS Username(usernameID INTEGER PRIMARY KEY AUTOINCREMENT,username text,password text)")
  81.        
  82.  
  83.         c.execute("INSERT INTO Username(username,password)VALUES(?,?)",[username_entry,password_entry])
  84.        
  85.  
  86.         conn.commit()
  87.                            
  88.  
  89.  
  90.     def Login(self):
  91.         root = Tk()
  92.         root.title("Login")
  93.        
  94.         username_label = Label(root,text = "Username").grid(row=0)
  95.         self.username_entry = Entry (root)
  96.         self.username_entry.grid(row=0,column=1)
  97.        
  98.  
  99.         password_label = Label(root,text = "Password").grid(row=1)
  100.         self.password_entry = Entry (root,show="*")
  101.         self.password_entry.grid(row=1,column=1)
  102.  
  103.         Login_but = Button(root,text = "Login",command =lambda:[self.check(self.username_entry,self.password_entry)]).grid(row=2)
  104.        
  105.  
  106.     def check(self,username_entry,password_entry):
  107.         username_get=username_entry.get()
  108.         password_get=password_entry.get()
  109.  
  110.         conn = sqlite3.connect("Profiles.db")
  111.         c = conn.cursor()
  112.         c.execute("SELECT * FROM Username WHERE username = ? AND password= ?",[username_get,password_get])
  113.         results = c.fetchall()
  114.         if results:
  115.             self.Addquestion()
  116.         else:
  117.             messagebox.showinfo("Log in","Incorrect username or password")
  118.  
  119.  
  120.        
  121.            
  122.        
  123.        
  124.     def Addquestion(self):
  125.  
  126.         root = Tk()
  127.         self.root=root
  128.         self.root.title("Add question menu")
  129.         var = StringVar(root)
  130.         self.var=var
  131.         var.set("---")
  132.  
  133.         question_label = Label(root,text="What is the path of the question?").grid(row=0)
  134.         self.image_entry = Entry(root)
  135.         self.image_entry.grid(row=0,column=1)
  136.  
  137.         answer_label = Label(root,text="What is the path of the answer?").grid(row=1)
  138.         self.answer_entry = Entry(root)
  139.         self.answer_entry.grid(row=1,column=1)
  140.  
  141.         choices=["Algebra","Trigonometry","Calculus"]
  142.         topic_label = Label(root,text = "Topics").grid(row=2)
  143.         topic_options = OptionMenu(root,var,*choices).grid(row=2,column=1)
  144.  
  145.        
  146.  
  147.         upper_label = Label(root,text="Upper").grid(row=4,column=1)
  148.         standard_label = Label(root,text="Standard").grid(row=4,column=3)    
  149.  
  150.         self.var7_u = IntVar()
  151.         var7_u=self.var7_u
  152.         var7_s = IntVar()
  153.         self.var7_s=var7_s
  154.         year7_label = Label(root,text="Y7").grid(row=5)
  155.         self.year7_upper_check = Checkbutton(root,variable=self.var7_u,onvalue=1).grid(row=5,column=1)
  156.         self.year7_standard_check = Checkbutton(root,variable=var7_s).grid(row=5,column=3)
  157.  
  158.         var8_u = IntVar()
  159.         self.var8_u=var8_u
  160.         var8_s = IntVar()
  161.         self.var8_s=var8_s
  162.         year8_label = Label(root,text="Y8").grid(row=6)
  163.         year8_upper_check = Checkbutton(root,variable=var8_u).grid(row=6,column=1)
  164.         year8_standard_check = Checkbutton(root,variable=var8_s).grid(row=6,column=3)
  165.  
  166.         var9_u = IntVar()
  167.         self.var9_u=var9_u
  168.         var9_s = IntVar()
  169.         self.var9_s=var9_s
  170.         year9_label = Label(root,text="Y9").grid(row=7)
  171.         year9_upper_check = Checkbutton(root,variable=var9_u).grid(row=7,column=1)
  172.         year9_standard_check = Checkbutton(root,variable=var9_s).grid(row=7,column=3)
  173.        
  174.  
  175.         var10_u = IntVar()
  176.         self.var10_u=var10_u
  177.         var10_s = IntVar()
  178.         self.var10_s=var10_s
  179.         year10_label = Label(root,text="Y10").grid(row=8)
  180.         year10_upper_check = Checkbutton(root,variable=var10_u).grid(row=8,column=1)
  181.         year10_standard_check = Checkbutton(root,variable=var10_s).grid(row=8,column=3)
  182.  
  183.         var11_u = IntVar()
  184.         self.var11_u=var11_u
  185.         var11_s = IntVar()
  186.         self.var11_s=var11_s
  187.         year11_label = Label(root,text="Y11").grid(row=9)
  188.         year11_upper_check = Checkbutton(root,variable=var11_u).grid(row=9,column=1)
  189.         year11_standard_check = Checkbutton(root,variable=var11_s).grid(row=9,column=3)
  190.        
  191.         submit_but = Button(root,text="Submit",command=lambda:[self.insert(self.var,self.var7_u,self.image_entry,self.answer_entry)]).grid(row=10)
  192.         quit_but = Button(root,text="Quit",command=self.quit).grid(row=10,column=1)
  193.         root.mainloop()
  194.        
  195.        
  196.        
  197.  
  198.        
  199.  
  200.  
  201.     def Menu_quiz(self):
  202.         root = Tk()
  203.         root.title("Quiz menu")
  204.  
  205.         var = StringVar(root)
  206.         var.set("---")
  207.         self.var=var
  208.  
  209.         var2=StringVar(root)
  210.         var2.set("---")
  211.         self.var2=var2
  212.        
  213.         topic_label = Label(root,text = "What topic do you want the questions to be about?").grid(row=0)
  214.         topic_options = OptionMenu(root, var, "Algebra", "Calculus", "Trigometry").grid(row=0,column=1)
  215.  
  216.         year_set_label = Label(root,text = "What year and set do you want the questions for?").grid(row=1)
  217.         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)
  218.        
  219.         time_label = Label(root,text="How much time do you want each question to appear for? (In seconds)").grid(row=2)
  220.         self.time_entry = Entry(root)
  221.         self.time_entry.grid(row=2,column=1)
  222.  
  223.         questions_label = Label(root,text="How many questions do you want the quiz to have?").grid(row=3)
  224.         self.question_entry = Entry(root)
  225.         self.question_entry.grid(row=3,column=1)
  226.  
  227.         run_quiz = Button(root,text="Run quiz",command=lambda:[self.quiz(var,self.var2,self.time_entry,self.question_entry)]).grid(row=4)
  228.  
  229.  
  230.    
  231.     def quiz(self,var,var2,time_entry,question_entry):
  232.             count=0
  233.             count_a=0
  234.             topic=var.get()
  235.             year_set=var2.get()
  236.             seconds=time_entry.get()
  237.             questions=question_entry.get()
  238.             conn = sqlite3.connect("information.db")
  239.             c = conn.cursor()
  240.             c.execute("SELECT questionId FROM Main WHERE topic=? and year_setId=?",[topic,year_set])
  241.             data = [c.fetchall()]
  242.             random.shuffle(data)  
  243.             for item in data:
  244.                 c.execute("SELECT path_answer FROM Questions WHERE questionId=?", [item])
  245.                 answerlist=[row[0] for row in c.fetchall()]                
  246.                 c.execute("SELECT path_question FROM Question WHERE questionId=?"[item])
  247.                 questionlist=[row[0] for row in c.fetchall()]
  248.                 for record in questionlist:
  249.                     image = Image.open(record)
  250.                     image.show()
  251.                     time.sleep(int(seconds))
  252.                     count=count+1                    
  253.                     if count==int(questions):
  254.                         for path in answerlist:
  255.                             image_a = Image.open(path)
  256.                             image_a.show()
  257.                             count_a=count_a+1
  258.                             if count_a==int(questions):
  259.                                 sys.exit()
  260.                            
  261.                    
  262.            
  263.  
  264.     def quit(self):
  265.         self.root.destroy()
  266.  
  267.  
  268.  
  269.  
  270.  
  271. if __name__ == "__main__":
  272.     root=Tk()
  273.     app = Quiz(root)
  274.     root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement