Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter
- import tkinter.filedialog
- class Questions:
- def __init__(self, id, question, answer1, answer2, answer3, answer4, right):
- self.id = id
- self.question = question
- self.answer1 = answer1
- self.answer2 = answer2
- self.answer3 = answer3
- self.answer4 = answer4
- self.right = right
- def getId(self):
- return self.id
- def getQuestion(self):
- return self.question
- def getAnswer1(self):
- return self.answer1
- def getAnswer2(self):
- return self.answer2
- def getAnswer3(self):
- return self.answer3
- def getAnswer4(self):
- return self.answer4
- def getRight(self):
- return self.right
- def Center(toplevel):
- toplevel.update_idletasks()
- w = toplevel.winfo_screenwidth()
- h = toplevel.winfo_screenheight()
- size = tuple(int(_) for _ in toplevel.geometry().split('+')[0].split('x'))
- x = w / 2 - size[0] / 2
- y = h / 2 - size[1] / 2
- toplevel.geometry("%dx%d+%d+%d" % (size + (x, y)))
- def OnOpen():
- ftypes = [('Python files', '*.dat'), ('All files', '*')]
- dlg = tkinter.filedialog.Open(filetypes=ftypes)
- fl = dlg.show()
- if fl != '':
- ReadFileText(fl)
- def ReadFileText(arg):
- global path, screen, root, arrayQuestions
- path = arg
- file = open(path, 'rt')
- inputFile = []
- arrayQuestions = []
- for line in file:
- row = [i for i in line.split('\t')]
- inputFile.append(row)
- for line in inputFile:
- arrayQuestions.append(
- Questions(line[0], line[1], line[2], line[3], line[4], line[5], line[6].replace("\n", "")))
- View()
- file.close()
- class View():
- def __init__(self):
- self.ViewQuestion()
- def ChangeAnswer(self, a):
- global ans
- ans = a
- print("change: ", ans)
- def ViewQuestion(self):
- global numberQuestion, arrayQuestions, indexLabel, R1, R2, R3, R4, SubmitButton, right, wrong, StatusBar
- if numberQuestion > 0:
- indexLabel.pack_forget()
- R1.pack_forget()
- R2.pack_forget()
- R3.pack_forget()
- R4.pack_forget()
- SubmitButton.pack_forget()
- print("ans: ", ans)
- print("arrayQuestions: ", arrayQuestions[numberQuestion - 1].getRight())
- if (ans == arrayQuestions[numberQuestion - 1].getRight()):
- print("true)")
- right += 1
- else:
- print("false(")
- wrong += 1
- StatusBar.pack_forget()
- StatusBar = tkinter.Label(root, relief="sunken",
- text="Total answers: " + str(right + wrong) + " Right answers: " + str(
- right) + " Wrong answers: " + str(wrong))
- StatusBar.pack(side=tkinter.BOTTOM, expand=tkinter.YES, fill=tkinter.X, anchor=tkinter.SW, pady=(2, 0))
- print(numberQuestion)
- if (numberQuestion < len(arrayQuestions)):
- indexLabel = tkinter.Label(root, text=str(numberQuestion + 1) + ") " + arrayQuestions[
- numberQuestion].getQuestion(), pady=10)
- indexLabel.pack(side=tkinter.TOP)
- R1 = tkinter.Radiobutton(root, text=arrayQuestions[numberQuestion].getAnswer1(),
- value=arrayQuestions[numberQuestion].getAnswer1(),
- command=lambda: self.ChangeAnswer(arrayQuestions[numberQuestion - 1].getAnswer1()))
- R2 = tkinter.Radiobutton(root, text=arrayQuestions[numberQuestion].getAnswer2(),
- value=arrayQuestions[numberQuestion].getAnswer2(),
- command=lambda: self.ChangeAnswer(arrayQuestions[numberQuestion - 1].getAnswer2()))
- R3 = tkinter.Radiobutton(root, text=arrayQuestions[numberQuestion].getAnswer3(),
- value=arrayQuestions[numberQuestion].getAnswer3(),
- command=lambda: self.ChangeAnswer(arrayQuestions[numberQuestion - 1].getAnswer3()))
- R4 = tkinter.Radiobutton(root, text=arrayQuestions[numberQuestion].getAnswer4(),
- value=arrayQuestions[numberQuestion].getAnswer4(),
- command=lambda: self.ChangeAnswer(arrayQuestions[numberQuestion - 1].getAnswer4()))
- R1.pack(side=tkinter.TOP, pady=0)
- R2.pack(side=tkinter.TOP, pady=0)
- R3.pack(side=tkinter.TOP, pady=0)
- R4.pack(side=tkinter.TOP, pady=0)
- if (numberQuestion < len(arrayQuestions) - 1):
- SubmitButton = tkinter.Button(root, text='Next', height=1, width=16, command=self.ViewQuestion)
- SubmitButton.pack()
- else:
- SubmitButton = tkinter.Button(root, text='Done', height=1, width=16, command=self.ViewQuestion)
- SubmitButton.pack()
- numberQuestion += 1
- else:
- resultScreen = tkinter.Tk()
- resultScreen.geometry('225x120')
- resultScreen.title("Result Screen")
- Center(resultScreen)
- resultLabel = tkinter.Label(resultScreen, text='Your Result, ' + name)
- resultLabel.pack(side=tkinter.TOP)
- rightLabel = tkinter.Label(resultScreen, text='Right: ' + str(right))
- rightLabel.pack(side=tkinter.TOP)
- wrongLabel = tkinter.Label(resultScreen, text='Wrong: ' + str(wrong))
- wrongLabel.pack(side=tkinter.TOP)
- SubmitButton = tkinter.Button(resultScreen, text='Quit', height=1, width=16, command=quit)
- SubmitButton.pack(pady=10)
- def EnterName():
- global name, welcomeEntryBox, welcomeScreen
- name = welcomeEntryBox.get()
- welcomeScreen.destroy()
- global root
- def main():
- global root, arrayQuestions, welcomeEntryBox, welcomeScreen, numberQuestion, right, wrong, StatusBar, ans
- numberQuestion = 0
- ans = ""
- welcomeScreen = tkinter.Tk()
- welcomeScreen.geometry('225x100')
- welcomeScreen.title("Welcome Screen")
- Center(welcomeScreen)
- welcomeLabel = tkinter.Label(welcomeScreen, text='Enter your name')
- welcomeLabel.pack(side=tkinter.TOP)
- welcomeEntryBox = tkinter.Entry(welcomeScreen)
- welcomeEntryBox.focus_set()
- welcomeEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- mySubmitButton = tkinter.Button(welcomeScreen, text='Ok', height=1, width=16, command=EnterName)
- mySubmitButton.pack()
- welcomeScreen.mainloop()
- root = tkinter.Tk()
- root.geometry('750x500')
- root.title("Python Lab #7")
- arrayQuestions = []
- menubar = tkinter.Menu(root)
- filemenu = tkinter.Menu(menubar, tearoff=0)
- filemenu.add_command(label="Open", command=OnOpen)
- filemenu.add_separator()
- filemenu.add_command(label="Exit", command=root.quit)
- menubar.add_cascade(label="File", menu=filemenu)
- root.config(menu=menubar)
- Name = tkinter.Label(root, text="Member: " + name)
- Name.pack(side=tkinter.TOP, anchor="w")
- Center(root)
- right = 0
- wrong = 0
- StatusBar = tkinter.Label(root, relief="sunken",
- text="Total answers: " + str(right + wrong) + " Right answers: " + str(
- right) + " Wrong answers: " + str(wrong))
- StatusBar.pack(side=tkinter.BOTTOM, expand=tkinter.YES, fill=tkinter.X, anchor=tkinter.SW, pady=(2, 0))
- root.mainloop()
- if __name__ == "__main__":
- main()
- # Example Questions.dat
- # if "Error:list index out of range" - replace SPACE with TAB in Questions.dat
- 1 1+7 43 10 12 8 8
- 2 2+4 11 22 6 44 6
- 3 3+5 5 10 8 4 8
- 4 4+8 9 1 12 6 12
- 5 5+2 7 9 3 8 7
- 6 6+6 6 7 12 5 12
- 7 7+3 1 10 7 3 10
- 8 8+3 11 2 3 1 11
- 9 9+6 5 22 3 15 15
- 10 10+1 6 11 13 4 11
Advertisement
Add Comment
Please, Sign In to add comment