-
Notifications
You must be signed in to change notification settings - Fork 2
/
QuizTime.py
137 lines (111 loc) · 3.82 KB
/
QuizTime.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
from tkinter import *
import json
import random
def WebBlock(URLblock):
f = open("C:/Windows/System32/drivers/etc/hosts", "a")
for URL in URLblock:
f.write("127.0.0.1 {} \n".format(URL))
f.close()
f = open("C:/Windows/System32/drivers/etc/hosts", "r")
print(f.read())
def WebUnBlock():
with open("C:/Windows/System32/drivers/etc/hosts", "r") as f:
lines = f.readlines()
with open("C:/Windows/System32/drivers/etc/hosts", "w") as f:
for line in lines:
if line.startswith("127.0.0.1") == False:
f.write(line)
def TimedUnblock(URLblock):
from datetime import datetime, timedelta
endtime = datetime.now() + timedelta(minutes=1)
while datetime.now() < endtime:
WebUnBlock()
if datetime.now() >= endtime:
WebBlock(URLblock)
def createaddTermWindow():
addTermWindow = Toplevel()
addTermWindow.geometry("500x165")
addTermWindow.title("Add Term")
addTermWindow.resizable(False, False)
qLabel = Label(addTermWindow, text="Question:")
qEntry = Entry(addTermWindow, width=80)
aLabel = Label(addTermWindow, text="Answer:")
aEntry = Entry(addTermWindow, width=80)
btnSubmit = Button(addTermWindow, text="Submit")
qLabel.grid(row=0, padx=5, pady=5)
qEntry.grid(row=1, column=0, padx=5, pady=5)
aLabel.grid(row=2, padx=5, pady=5)
aEntry.grid(row=3, column=0, padx=5, pady=5)
btnSubmit.grid(row=4, padx=5, pady=10)
def canvPrint(string):
frmSets.create_text(175, 100, text=str(string))
frmSets.update
frmSets.create_window(175, 200, window = answer)
frmSets.create_window(175, 250, window = answerBtn)
def studySet():
global totalTerms
global termList
global correctCount
frmSets.delete('all')
answer.delete(0, 'end')
correctCount = 0
termList = setData["sets"][currentSet.get()]
totalTerms = len(termList) - 1
canvPrint(termList[totalTerms][0])
def printCorrect():
global correctCount
global totalTerms
if answer.get() == termList[totalTerms][1]:
frmSets.delete('all')
frmSets.create_text(175, 300, text="Correct!")
correctCount += 1
else:
frmSets.delete('all')
frmSets.create_text(175, 300, text="Incorrect!")
def submit():
global totalTerms
global correctCount
printCorrect()
totalTerms = totalTerms - 1
if totalTerms == -1:
frmSets.create_text(175, 175, text="Done with set! {} minutes earned!".format(correctCount))
else:
answer.delete(0, 'end')
canvPrint(termList[totalTerms][0])
def enterCommand(event):
global totalTerms
if totalTerms == -1: # Disable Enter button after set complete
pass
else:
submit()
def addset():
pass
setData = ""
with open("data.json") as f:
for x in f.readlines():
setData = setData+x
setData = json.loads(setData)
setList = []
for x in setData["sets"]:
setList.append(x)
root = Tk()
currentSet = StringVar()
currentSet.set("Select Set")
root.geometry("610x425")
root.title("QuizTime")
root.resizable(False, False)
frmSets = Canvas(root, width=350, height=350, borderwidth=5, relief=RAISED, highlightthickness=0)
btnaddTermWindow = Button(root, text="Add Term", command=createaddTermWindow)
opmSets = OptionMenu(root, currentSet, *setList)
opmSets.config(activebackground='#DDDDDD')
studyBtn = Button(root, text="Study Set", height=3, width=20, command=studySet)
answer = Entry(frmSets, width=40)
answer.bind('<Return>', enterCommand)
answerBtn = Button(root, text="Submit", command=submit)
addsetBtn = Button(root, text="Add Set", command=addset)
opmSets.grid(row=0, column=1, columnspan=2)
btnaddTermWindow.grid(row=2, column=1)
frmSets.grid(row=0, column=0, rowspan=3, padx=30, pady=30)
studyBtn.grid(row=1, column=1, columnspan=2)
addsetBtn.grid(row=2, column=2)
root.mainloop()