title: Global variable problem - Python
body: <p>I am having difficulties with global variables.</p>
  
  <p>My code:</p>
  
  <pre><code>from Tkinter import *
  import Tkinter as tk
  import tkMessageBox
  import time
  import re
  import string
  from random import randint
  class prgrm():
  
      def start():
          global bs
          global bsrly
          global bsrly2
          global turns
          global rec
          global exp
          global word
          global x
          global w
          global guess
          print "Hangman v1.7 - by Josh &amp; Paul"
          bsrly2 = False
          bsrly = False
          notlie = True
          turns = 8
          rec = ''
          exp = '^[a-z]+$'
          textfile = open('dictionary.txt', 'r')
          words = ['j']
          n = randint(0, len(words)-1)
          word = words[n]
          x = 0
          w = list(word)
          guess = ''
          bs = ''
          for letter in word:
              if letter in guess:
                  bs += letter + ' '
              else:
                  bs += '_ '
  
          bs = bs.upper()
          first()
  
  
      def MainProgram():
          global ui
          global guess
          global turns
          global rec
          global bs
          global bsrly
          global bsrly2
          bs = ''
          inp = ui.get().strip()
          inp = inp.lower()
          ui.delete(0, END)
          if bsrly2 == True:
              root.quit()
  
          if inp == "":
              tkMessageBox.showerror("Incorrect Entry", "Error: Please enter a letter")
  
          elif inp in guess:
              tkMessageBox.showerror("Incorrect Entry", "Error: You have already tried that letter")
  
          elif not re.match(exp, inp):
              tkMessageBox.showerror("Incorrect Entry", "Error: Please enter a letter")
  
  
  
  
          else:
              if inp not in word:
                  turns -= 1
  
              if turns == 7:
                  img.configure(image=image0)
              if turns == 6:
                  img.configure(image=image1)
              if turns == 5:
                  img.configure(image=image2)
              if turns == 4:
                  img.configure(image=image3)
              if turns == 3:
                  img.configure(image=image4)
              if turns == 2:
                  img.configure(image=image5)
              if turns == 1:
                  img.configure(image=image6)
  
              guess += ' ' + inp
              if turns == 0:
                  img.configure(image=image7)
                  bsrly2 = True
  
              if inp not in word:
                  upd.configure(text= "Wrong, try again")
                  rec += ' ' + inp
              if inp in word:
                  upd.configure(text= "Thats correct!")
  
              guess2 = rec.upper()
              fb2.configure(text = "Wrong letters:" + guess2)
  
              wait = 0
              left = 0
              for letter in word:
                  if letter in guess:
                      bs += letter + " "
                  else:
                      bs += '_ '
                      left += 1
  
              bs = bs.upper()
              if left == 0:
                  bsrly = True
              feedback.configure(text=bs)
              bs = ''
              if bsrly2 == True:
                  root
                  upd.configure(text="You lose, the word was " + word)
  
              check()
      def check():
          if bsrly == True:
              root.destroy()
              root2 = Tk()
              root2.wm_iconbitmap('hmn.ico')
              root2.title("You Win!")
              youwin = tk.PhotoImage(master=root2, file="YouWin.gif")
              winer = Label(master=root2, image=youwin)
              winer.image = youwin
              winer.grid(row=0, rowspan=20)
              wanaquit = Label(master=root2, text="Play Again?")
              wanaquit.grid(row=21)
              pbuton = Button(master=root2, text="Yes", command=start)
              pbuton.grid(row=22)
              root2.mainloop()
      global val      
      def val(i):
          if int(i) &gt; 0:
            return False
          return True
  
      def first():
          global bs
          root = Tk()
          root.wm_iconbitmap('hmn.ico')
          root.title("Hangman v1.7")
          vcmd = (root.register(val), '%i')
          image = tk.PhotoImage(file="image.gif")
          image0 = tk.PhotoImage(file="image0.gif")
          image1 = tk.PhotoImage(file="image1.gif")
          image2 = tk.PhotoImage(file="image2.gif")
          image3 = tk.PhotoImage(file="image3.gif")
          image4 = tk.PhotoImage(file="image4.gif")
          image5 = tk.PhotoImage(file="image5.gif")
          image6 = tk.PhotoImage(file="image6.gif")
          image7 = tk.PhotoImage(file="image7.gif")
          content = tk.Frame(root, bg='black')
          namelbl = tk.Label(content, text="Enter a letter:", bg="black", fg="green")
          feedback = tk.Label(content, text=bs, bg="black", fg="green")
          rb = tk.Checkbutton(content, text="Music", bg="black", fg="green")
          slave = tk.Label(content, text="", bg="black", fg="green")
          slave2 = tk.Label(content, text="", bg="black", fg="green")
          upd = tk.Label(content, text="", bg="black", fg="green")
          fb2 = tk.Label(content, text="Used letters:", bg="black", fg="green")
          ui = tk.Entry(content, validate="key", validatecommand=vcmd)
          ui["width"] = 2
          img = tk.Label(master=content, image=image, bg="black")
          ok = tk.Button(content, text="Okay", bg="black", fg="green", command=MainProgram)
          ui.focus()
          ui.bind('&lt;Return&gt;', (lambda e: MainProgram()))
          content.grid(column=0, row=0)
          img.grid(column=0, row=0, columnspan=4)
          feedback.grid(column=0, row=1)
          fb2.grid(column=0, row=2)
          slave.grid(row=3)
          slave2.grid(row=5)
          upd.grid(row=4, columnspan=4)
          namelbl.grid(column=0, row=6)
          ui.grid(column=1, row=6, sticky=W)
          ok.grid(column=1, row=6)
          rb.grid(row=7)
          root.mainloop()
      first()
  
  start()
  </code></pre>
  
  <p>I am going crazy because it keeps on saying things like "the global variable 'bs' is not defined' etc. What sould i do? please and thankyous :)</p>