Bitte um Hilfe in Sachen Python

Hlali, ich bin eine Python-Anfängerin und komme leider nicht weiter. Der Fehler NameError: name ’self‘ is not defined
>>> erscheint beim Aufruf des folgenden Programms:

from tkinter import *

root = Tk()

class Application(Frame):

                def calculate(self):
                                self.calculation = Label(text=self.entry.get())
                                self.calculation.pack(side="bottom")

def createWidgets(self):
                self.welcome = Label(self)
                self.welcome["text"] = "Herzlich Willkommen"
                self.welcome.pack(side="top")

                self.entry = Entry(self)
                self.entry.pack()

                self.QUIT = Button(self)
                self.QUIT["text"] = "Schliessen"
                self.QUIT["fg"] = "red"
                self.QUIT["command"] = self.quit
                self.QUIT.pack({"side": "left"})

                self.submit = Button(self)
                self.submit["text"] = "Abschicken",
                self.submit["command"] = self.calculate
                self.submit.pack({"side": "left"})

def __init__(self, master=None):
                Frame.__init__(self, master)
self.pack()
self.createWidgets()

root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()
logo = PhotoImage(file="../haekeluebersetzung/kruemelmonster-400xx.png")
w1 = Label(root, image=logo).pack(side="right",
                                  )
explanation = """Herzlich Willkommen im Handarbeitsübersetzer"""
w2 = Label(root, 
           justify=LEFT,
           padx = 10, 
           text=explanation).pack(side="left")
root.mainloop()

Bitte helft mir mal, was falsch ist.