diff --git a/programfiles/default.tst b/programfiles/default.tst index d3f0310..2f039fd 100644 --- a/programfiles/default.tst +++ b/programfiles/default.tst @@ -1,3 +1,3 @@ EXAMPLE TEST SUBJECT 1/EXAMPLE TEST SUBJECT 2 -1 +0 question will appear here/question will appear here diff --git a/angtest.tst b/tests/example angtest.tst similarity index 92% rename from angtest.tst rename to tests/example angtest.tst index aba8d7a..957e277 100644 --- a/angtest.tst +++ b/tests/example angtest.tst @@ -1,6 +1,6 @@ -CESTINA/ANGLICTINA -13 -apple/jablko -car,automobile/auto,automobil -chopper,helicopter/vrtulnik,helikoptera -pear/hruska +CESTINA/ANGLICTINA +0 +apple/jablko +car,automobile/auto,automobil +chopper,helicopter/vrtulnik,helikoptera +pear/hruska diff --git a/vyzkousejme.py b/vyzkousejme.pyw similarity index 96% rename from vyzkousejme.py rename to vyzkousejme.pyw index b035d96..a604999 100644 --- a/vyzkousejme.py +++ b/vyzkousejme.pyw @@ -1,165 +1,165 @@ -from tkinter import * -from tkinter import filedialog -from tkinter import messagebox -import random - - -def swapSides(): - global test - - temp = test[2] - test[2] = test[3] - test[3] = temp - - newQuestion() - - -def saveTest(): - print(test) - with open(filepath, mode='w') as file: - file.write(test[0]+'/'+test[1]) - file.write(str(test[4])+'\n') - for i in range(len(test[2])): - for j in range(len(test[2][i])): - file.write(test[2][i][j]) - if j < len(test[2][i])-1: - file.write(',') - file.write('/') - for j in range(len(test[3][i])): - file.write(test[3][i][j]) - if j < len(test[3][i])-1: - file.write(',') - file.write('\n') - - -def newQuestion(): - global questionPlace - questionPlace = random.randint(0, len(test[2])-1) - newQuestion = test[2][questionPlace][0] - question.set(newQuestion) - - -def on_closing(): - if messagebox.askokcancel("Quit", "Do you want to quit?"): - saveTest() - root.destroy() - - -def submitAnswer(uselessArgument): - global score - if answerEntry.get().lower() in test[3] [questionPlace]: - score += 1 - currentScore.set('Score: %s' % (score)) - else: - score = 0 - currentScore.set('Score: %s' % (score)) - if score > test[4]: - test[4] = score - highScore.set('High score: %d' % (test[4])) - answerEntry.delete(0, 'end') - newQuestion() - - -def formatTest(filepath): - global score - with open(filepath) as file: - file = file.readlines() - - nazev1 = file[0].split('/')[0] - nazev2 = file[0].split('/')[1] - - sloupec1 = [] - sloupec2 = [] - - highScore = int(file[1].strip('\n')) - score = 0 - - for line in file[2:]: - currentline = line.strip('\n') - currentline = currentline.split('/') - sloupec1.append(currentline[0].split(',')) - sloupec2.append(currentline[1].split(',')) - - return nazev1, nazev2, sloupec1, sloupec2, highScore - - -def getExtension(filename): # returns the last four characters in a filename as a string - return filename[-4:None] - - -def openTest(): - global test - global filepath - saveTest() - gotfile = False - filepath = None - while not gotfile: - filepath = filedialog.askopenfilename(title='Select test file') - if getExtension(filepath) == '.tst': - gotfile = True - else: - messagebox.showinfo("ERROR: unrecognized file", "We are sorry but files with the '%s' appendix are not supported, we support only '.tst' files." % (getExtension(filepath))) - test = list(formatTest(filepath)) - newQuestion() - currentScore.set('Score: %s' % score) - highScore.set('High score: %d' % test[4]) - - -def makeMenu(root): - menu = Menu(root) - root.config(menu=menu) - - menu.add_command(label='Open', command=openTest) - menu.add_command(label='Switch sides', command=swapSides) - - return menu - - -def makeRoot(): - root = Tk() - root.geometry('500x400') - root.title('Test Me') - root.configure(bg="gray") - return root - - -root = makeRoot() -filepath = 'programfiles/default.tst' -test = list(formatTest('programfiles/default.tst')) -questionPlace = 0 -score = 0 - -currentScore = StringVar() -highScore = StringVar() -question = StringVar() -timeMultiplier = StringVar() - -anotherSpacingLabel = Label(bg='gray', padx=5) -currentScoreLabel = Label(root, textvariable=currentScore, bg='gray') -highScoreLabel = Label(root, textvariable=highScore, bg='gray') -questionLabel = Label(root, textvariable=question, width=30) -spacingLabel = Label(bg='gray', padx=10) -answerEntry = Entry(root, width=30) -answerButton = Button(root, text='submit', command=submitAnswer) -timeMultiplierLabel = Label(root, textvariable=timeMultiplier, bg='gray') - -anotherSpacingLabel.grid(row=0, column=0) -currentScoreLabel.grid(row=0, column=1, columnspan=2, sticky=W) -highScoreLabel.grid(row=0, column=4, columnspan=2, sticky=E) -questionLabel.grid(row=1, column=2, sticky=W) -spacingLabel.grid(row=1, column=3) -answerEntry.grid(row=1, column=4, sticky=E) -answerButton.grid(row=1, column=5, sticky=W) -timeMultiplierLabel.grid(row=2, column=1, columnspan=5) - -currentScore.set('Score: %s' %(score)) -highScore.set('High score: %d' %(test[4])) -question.set('question will appear here') -timeMultiplier.set('Time multiplier is: 0') - -root.protocol("WM_DELETE_WINDOW", on_closing) -answerEntry.bind('', submitAnswer) - -menu = makeMenu(root) - -root.mainloop() +from tkinter import * +from tkinter import filedialog +from tkinter import messagebox +import random + + +def swapSides(): + global test + + temp = test[2] + test[2] = test[3] + test[3] = temp + + newQuestion() + + +def saveTest(): + print(test) + with open(filepath, mode='w') as file: + file.write(test[0]+'/'+test[1]) + file.write(str(test[4])+'\n') + for i in range(len(test[2])): + for j in range(len(test[2][i])): + file.write(test[2][i][j]) + if j < len(test[2][i])-1: + file.write(',') + file.write('/') + for j in range(len(test[3][i])): + file.write(test[3][i][j]) + if j < len(test[3][i])-1: + file.write(',') + file.write('\n') + + +def newQuestion(): + global questionPlace + questionPlace = random.randint(0, len(test[2])-1) + newQuestion = test[2][questionPlace][0] + question.set(newQuestion) + + +def on_closing(): + if messagebox.askokcancel("Quit", "Do you want to quit?"): + saveTest() + root.destroy() + + +def submitAnswer(uselessArgument): + global score + if answerEntry.get().lower() in test[3] [questionPlace]: + score += 1 + currentScore.set('Score: %s' % (score)) + else: + score = 0 + currentScore.set('Score: %s' % (score)) + if score > test[4]: + test[4] = score + highScore.set('High score: %d' % (test[4])) + answerEntry.delete(0, 'end') + newQuestion() + + +def formatTest(filepath): + global score + with open(filepath) as file: + file = file.readlines() + + nazev1 = file[0].split('/')[0] + nazev2 = file[0].split('/')[1] + + sloupec1 = [] + sloupec2 = [] + + highScore = int(file[1].strip('\n')) + score = 0 + + for line in file[2:]: + currentline = line.strip('\n') + currentline = currentline.split('/') + sloupec1.append(currentline[0].split(',')) + sloupec2.append(currentline[1].split(',')) + + return nazev1, nazev2, sloupec1, sloupec2, highScore + + +def getExtension(filename): # returns the last four characters in a filename as a string + return filename[-4:None] + + +def openTest(): + global test + global filepath + saveTest() + gotfile = False + filepath = None + while not gotfile: + filepath = filedialog.askopenfilename(title='Select test file') + if getExtension(filepath) == '.tst': + gotfile = True + else: + messagebox.showinfo("ERROR: unrecognized file", "We are sorry but files with the '%s' appendix are not supported, we support only '.tst' files." % (getExtension(filepath))) + test = list(formatTest(filepath)) + newQuestion() + currentScore.set('Score: %s' % score) + highScore.set('High score: %d' % test[4]) + + +def makeMenu(root): + menu = Menu(root) + root.config(menu=menu) + + menu.add_command(label='Open', command=openTest) + menu.add_command(label='Switch sides', command=swapSides) + + return menu + + +def makeRoot(): + root = Tk() + root.geometry('500x400') + root.title('Test Me') + root.configure(bg="gray") + return root + + +root = makeRoot() +filepath = 'programfiles/default.tst' +test = list(formatTest('programfiles/default.tst')) +questionPlace = 0 +score = 0 + +currentScore = StringVar() +highScore = StringVar() +question = StringVar() +timeMultiplier = StringVar() + +anotherSpacingLabel = Label(bg='gray', padx=5) +currentScoreLabel = Label(root, textvariable=currentScore, bg='gray') +highScoreLabel = Label(root, textvariable=highScore, bg='gray') +questionLabel = Label(root, textvariable=question, width=30) +spacingLabel = Label(bg='gray', padx=10) +answerEntry = Entry(root, width=30) +answerButton = Button(root, text='submit', command=submitAnswer) +timeMultiplierLabel = Label(root, textvariable=timeMultiplier, bg='gray') + +anotherSpacingLabel.grid(row=0, column=0) +currentScoreLabel.grid(row=0, column=1, columnspan=2, sticky=W) +highScoreLabel.grid(row=0, column=4, columnspan=2, sticky=E) +questionLabel.grid(row=1, column=2, sticky=W) +spacingLabel.grid(row=1, column=3) +answerEntry.grid(row=1, column=4, sticky=E) +answerButton.grid(row=1, column=5, sticky=W) +timeMultiplierLabel.grid(row=2, column=1, columnspan=5) + +currentScore.set('Score: %s' %(score)) +highScore.set('High score: %d' %(test[4])) +question.set('question will appear here') +timeMultiplier.set('Time multiplier is: 0') + +root.protocol("WM_DELETE_WINDOW", on_closing) +answerEntry.bind('', submitAnswer) + +menu = makeMenu(root) + +root.mainloop()