title: Python 3.2 tkinter create a results frame to display output
body: <p>I currently have a working menu test for my restaurant that reads input received by checkbuttons, compares them to correct answers and then displays either a <strong><em>good job</em></strong> messagebox or a <strong><em>keep working</em></strong> messagebox.  I also have it set up so that if they do not get the questions right, it prints what they answered followed by the correct answer.  Instead of the message boxes and simply printing what they did wrong I would like to have a final <strong><em>results</em></strong> screen that either has a good job (or something along those lines) message or has the printed wrong vs correct answers on it.  Here is my code to show you how I have implemented everything so far, like I said everything is working I am just trying to figure out a way to make it more presentable and haven't been able to find a way to do this.</p>
  
  <pre><code>from tkinter import *
  import tkinter.messagebox as tkMessageBox
  class GUI(Frame):
  
  def __init__(self, parent):
      Frame.__init__(self, parent)    
      self.parent = parent
      self.initUI()
      self.count = -1
      self.answers = {'nft':[], 'nckt':[]}
      self.menuItems = {'nft': ['Cheese', 'Cabbage', 'Corn', 'Blackened Fish', 'Salsa'],
      'nckt': ['Lettuce', 'Cheese', 'Corn', 'Blackened Chicken', 'Salsa']}
      self.menu = ['nft', 'nckt']
      #self.p = PhotoImage(file="wahoos.gif")
      #self.l = Label(self, image=self.p).grid(row=7, column=7)
  def initUI(self):
      self.grid() 
      self.parent.title("Wahoos Menu Test")
      self.create_buttons() 
  
  
  def create_buttons(self):
      for r in range(20):
          for c in range(14):
              Label(self, text='',
                  borderwidth=0).grid(row=r,column=c)
      self.b = Button(self, text ="Begin Exam", relief=RIDGE, fg="black", command= self.on_button_press)
      self.b.grid(row=19, column=7)
      self.m = Label(self, text="")
      self.m.grid(row=7, column=0)
      L = Label(self, text="What comes in the following", fg="blue").grid(row=6, column=0)
      self.tortButton = {'Flour':0, 'Corn':0, 'Wheat':0}
      self.vegButton = {'Lettuce':0, 'Cabbage':0, 'Cheese':0,
          'Ahee Rice':0, 'Brown Rice':0, 'Banzai Veg':0, 'Red Cabbage':0, 'Beans':0}
      self.protButton = {'Carne Asada':0, 'Flamebroiled Chicken':0, 'Blackened Fish':0,
          'Blackened Chicken':0, 'Flamebroiled Fish':0, 'Pork':0, 'Shrimp':0,
          'Tofu':0, 'Blackened Mushroom':0, 'Rice and Beans':0, 'Banzai Veggies':0}
      self.sauceButton = {'Salsa':0, 'Guacamole':0, 'Sour Cream':0,
          'Roasted Pepper':0, 'Ketchup':0, 'Ranch':0, 'Balsamic':0,
          'Mr. Lees':0, 'Teriyaki':0, 'Tapatio':0, 'Cream Cheese':0, 'Aioli':0}
      V = Label(self, text="Veggies", fg="green").grid(row=1, column=11, sticky=W)
      T = Label(self, text="Tortillas     ", fg="green").grid(row=1, column=12, sticky=W)
      P = Label(self, text="Proteins", fg="green").grid(row=1, column=13, sticky=W)
      S = Label(self, text="Sauces", fg="green").grid(row=1, column=14, sticky=W)
      c = 1
      for key in self.tortButton:
          c +=1
          self.tortButton[key] = IntVar()
          to = Checkbutton(self, text=key, variable=self.tortButton[key]).grid(row=c, column=12, sticky=W)
      c = 1
      for key in self.vegButton:
          c += 1
          self.vegButton[key] = IntVar()
          vo = Checkbutton(self, text=key, variable=self.vegButton[key]).grid(row=c, column=11, sticky=W)         
      c = 1
      for key in self.protButton:
          c +=1
          self.protButton[key] = IntVar()
          po = Checkbutton(self, text=key, variable=self.protButton[key]).grid(row=c, column=13, sticky=W)
      c = 1
      for key in self.sauceButton:
          c +=1
          self.sauceButton[key] = IntVar()
          so = Checkbutton(self, text=key, variable=self.sauceButton[key]).grid(row=c, column=14, sticky=W)
  
  def on_button_press(self):
      self.count = self.count + 1
      if self.count == len(self.menu):
          self.m.configure(text="")
          self.b.configure(text ="Your Done!  Click here to see your results.", command = self.compare)
      else:
          self.m.configure(text=self.menu[self.count])
          self.b.configure(text ="Submit and Continue", command= self.read_checks)
  def read_checks(self):
      for key, value in self.vegButton.items():
          state = value.get()
          if state !=0:
              print (key)
              self.answers[self.menu[self.count]].append(key)
              self.vegButton[key].set(0)
      for key, value in self.tortButton.items():
          state = value.get()
          if state !=0:
              print (key)
              self.answers[self.menu[self.count]].append(key)
              self.tortButton[key].set(0)
      for key, value in self.protButton.items():
          state = value.get()
          if state !=0:
              print (key)
              self.answers[self.menu[self.count]].append(key)
              self.protButton[key].set(0)
      for key, value in self.sauceButton.items():
          state = value.get()
          if state !=0:
              print (key)
              self.answers[self.menu[self.count]].append(key)
              self.sauceButton[key].set(0)
      print (self.answers)
      print (self.menuItems)
      self.on_button_press()
  def compare(self):
      self.match = True
      self.count = -1     
      for key in self.answers:
          if self.answers[key] != self.menuItems[key]:
              print ("For ", self.menu[self.count], " you answered ", self.answers[key])
              print ("The correct answer for ", self.menu[self.count], " is ", self.menuItems[key])
              self.count = self.count + 1
              self.match = False
      if self.match == True:
          tkMessageBox.showinfo("All Pau!", "Nice job!  I think your ready!")
      else:
          tkMessageBox.showinfo("Uh Ohh", "Looks like you have some more studying to do.")
  def main():
      root = Tk()
      app = GUI(root)
      root.mainloop()
  if __name__ == '__main__':
  main()
  </code></pre>
  
  <p><code>def compare(self)</code> is where I do my comparisons and print the output that I would like to appear on the results screen, this is also where I have the messageboxes pop up.</p>