Advertisement
Guest User

NEA

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