title: Tkinter dice roller
body: <p>I'm new to programming and have just been set an assignment to create a dice roller in Python using Tkinter. I'm completely stumped by this error message:</p>
  
  <pre><code>Exception in Tkinter callback
  Traceback (most recent call last):
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
      return self.func(*args)
    File "C:/Users/d/Desktop/Dice Simulator/Simulator.py", line 12, in roll
      if y == 1:
  UnboundLocalError: local variable 'y' referenced before assignment
  </code></pre>
  
  <p>Can anyone shed light on my mistake? Here is my entire code:</p>
  
  <pre><code>y = 1
  print "Please wait for the GUI to load"
  from Tkinter import *
  DICE = dict(
      sixsided={'name': 'Six Sided Dice',
                'side': 6},
      eightsided = {'name': 'Eight Sided Dice',
                    'side': 8}
      )
  names = ['Six Sided Dice', 'Eight Sided Dice']
  import random
  
  
  def back_():
      diceroll.destroy()
  
  def roll():
      if y == 1:
          blankanswer.pack_forget()
          droll.set("You rolled a " + str(random.randrange(1,endnum,1)))
          filledanswer.pack()
          y = 2
      if y == 2:
          droll.set("You rolled a " + str(random.randrange(1,endnum,1)))
  
  def cont_():
      y = 1
      if dice.get() == "Six Sided Dice":
          selecteddice = "sixsided"
      if dice.get() == "Eight Sided Dice":
          selecteddice = "eightsided"
  
      diceroll = Tk()
      diceroll.title("Dice Simulator")
  
      endnum = int(DICE[selecteddice]["side"])
  
      droll = StringVar()
      droll.set("You rolled a " + str(random.randrange(1,endnum,1)))
  
      reroll = Button(diceroll, text="Click to roll the " + dice.get() + ".",command=roll)
      reroll.pack()
  
      blankanswer = Label(diceroll, text="You rolled a  ")
      blankanswer.pack()
  
  
      filledanswer = Label(diceroll, textvariable=droll)
  
      back = Button(diceroll, text="Back", command=back_)
      back.pack(side=BOTTOM)
  
      diceroll.mainloop()
  
  
  
  diceselect = Tk()
  diceselect.title("Select your dice")
  
  Label(diceselect, text="Please select the dice you would like to roll").pack()
  
  dice = StringVar()
  dice.set("Six Sided Dice")
  
  entry = OptionMenu(diceselect, dice, *names)
  entry.configure(width=15)
  entry.pack(side=LEFT)
  
  cont = Button(diceselect, text="Continue", command=cont_)
  cont.configure(width=15)
  cont.pack(side=RIGHT)
  
  diceselect.mainloop()
  </code></pre>
  
  <p>Thanks in advance!</p>