def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent #Create UI elements self.results_list = ResultsTable(self.parent, height=160, width=250) buttonRetry = Button(self.parent, text="Retry", width=10, command=self.restart) buttonNewlist = Button(self.parent, text="New List", width=10, command=self.new_selection) buttonExit = Button(self.parent, text="Quit", width=10, command=self.parent.destroy) self.results_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF") font = ("Helvetica", 20) self.results_canvas.create_text(300, 15, text="Results", fill="#004183", font=font) self.results_canvas.create_window(310, 35, window=self.results_list, anchor=NW) self.results_canvas.create_window(150, 230, window=buttonRetry) self.results_canvas.create_window(300, 230, window=buttonNewlist) self.results_canvas.create_window(450, 230, window=buttonExit) self.results_canvas.create_text(25, 55, font=font, text="List:", anchor=W) self.results_canvas.create_text(25, 85, font=font, text="Score:", anchor=W) self.results_canvas.create_text(25, 115, font=font, text="Time:", anchor=W) self.results_canvas.create_text(25, 145, font=font, text="Best Score:", anchor=W) self.results_canvas.create_text(25, 175, font=font, text="Best Time:", anchor=W) self.list_name = self.results_canvas.create_text(300, 55, font=font, anchor=E) self.score_number = self.results_canvas.create_text(300, 85, font=font, anchor=E) self.time_number = self.results_canvas.create_text(300, 115, font=font, anchor=E) self.best_score = self.results_canvas.create_text(300, 145, font=font, anchor=E) self.best_time = self.results_canvas.create_text(300, 175, font=font, anchor=E) self.results_canvas.pack()
class ResultsFrame(Frame): "Class which controls the results screen of the spelling aid""" def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent #Create UI elements self.results_list = ResultsTable(self.parent, height=160, width=250) buttonRetry = Button(self.parent, text="Retry", width=10, command=self.restart) buttonNewlist = Button(self.parent, text="New List", width=10, command=self.new_selection) buttonExit = Button(self.parent, text="Quit", width=10, command=self.parent.destroy) self.results_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF") font = ("Helvetica", 20) self.results_canvas.create_text(300, 15, text="Results", fill="#004183", font=font) self.results_canvas.create_window(310, 35, window=self.results_list, anchor=NW) self.results_canvas.create_window(150, 230, window=buttonRetry) self.results_canvas.create_window(300, 230, window=buttonNewlist) self.results_canvas.create_window(450, 230, window=buttonExit) self.results_canvas.create_text(25, 55, font=font, text="List:", anchor=W) self.results_canvas.create_text(25, 85, font=font, text="Score:", anchor=W) self.results_canvas.create_text(25, 115, font=font, text="Time:", anchor=W) self.results_canvas.create_text(25, 145, font=font, text="Best Score:", anchor=W) self.results_canvas.create_text(25, 175, font=font, text="Best Time:", anchor=W) self.list_name = self.results_canvas.create_text(300, 55, font=font, anchor=E) self.score_number = self.results_canvas.create_text(300, 85, font=font, anchor=E) self.time_number = self.results_canvas.create_text(300, 115, font=font, anchor=E) self.best_score = self.results_canvas.create_text(300, 145, font=font, anchor=E) self.best_time = self.results_canvas.create_text(300, 175, font=font, anchor=E) self.results_canvas.pack() def calculate(self, word_list, time_elapsed): """Calculate and display the users score and time, as well as personal bests""" score = 0 user_id = self.parent.user.uid list_id = word_list.l_id self.results_list.add_list(word_list.words) for word in word_list.words: if word.isCorrect: score += 1 previous_records = self.parent.db.sql("""SELECT best_score, best_time FROM user_list_map WHERE list_id = '%d' AND user_id = '%d'""" %(list_id, user_id)) try: best_score = max(score, previous_records[0][0]) best_time = min(time_elapsed, previous_records[0][1]) self.parent.db.sql("""UPDATE user_list_map SET best_score='%d', best_time='%d' WHERE list_id = '%d' AND user_id = '%d'""" %(best_score, best_time, list_id, user_id)) except IndexError: #If the list has not been played before, create a record best_score = score best_time = time_elapsed print "Creating" self.parent.db.sql("""INSERT INTO user_list_map VALUES ('%d', '%d', '%d', '%d')""" %(user_id, list_id, best_score, best_time)) self.results_canvas.itemconfig(self.list_name, text=word_list.name) self.results_canvas.itemconfig(self.score_number, text=score) self.results_canvas.itemconfig(self.time_number, text=time_elapsed) self.results_canvas.itemconfig(self.best_score, text=best_score) self.results_canvas.itemconfig(self.best_time, text=best_time) def restart(self): """Clear the results page and restart the game with the current list""" self.results_list.clear() self.parent.start_game(self.parent.current_list) def new_selection(self): """Clear the results page and return to the start screen""" self.results_list.clear() self.parent.new_list()