I am having difficulties with global variables.
My 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 & 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) > 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('<Return>', (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()
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 :)
 
     
     
     
     
     
    