2017-04-11 3 views
0

Ich bin ziemlich neu zu Python und Codierung im Allgemeinen. Ich versuche, eine Bewerbung für ein Spiel zu machen, und ich kann nicht scheinen, den Rahmen zu zerstören, den ich schuf.Python Tkinter Frame Destroy

from tkinter import * 


class application: 

    def __init__(self,parent): 
     self.startContainer = Frame(parent) 
     self.startContainer.pack() 

     self.lbl = Label(startContainer,text="Please choose from the following: \nFaith Points (F) \nBanqueting Goods (B) \nEnter Honour (E) ") 
     self.lbl.pack() 

     self.btn1 = Button(startContainer,text="Votes",command=self.votes(startContainer)).pack() 
     self.btn2 = Button(startContainer,text="Gold Tithe",command=self.gold(startContainer)).pack() 

    def votes(parent,self): 
     parent.destroy() 

    def gold(parent,self): 
     pass 


window = Tk() 
app = application(window) 
window.title("Tools") 
window.geometry("425x375") 
window.wm_iconbitmap("logo.ico") 
window.resizable(width=False, height=False) 
window.mainloop() 
+1

wenn Methoden definiert, sollte das erste Argument 'self' sein. Dies gilt für die Methoden votes und gold. Weitere Informationen finden Sie unter [link] (http://stackoverflow.com/questions/2709821/what-is-the-purpose-of-self). Beachten Sie, dass die Benennung von "self" nur eine Konvention und kein reserviertes Wort ist. – arrethra

Antwort

0

Sie rufen die Zerstörung auf ein Widget im Hauptfenster. Nennen Sie die Zerstörung auf dem "Elternteil". Verwandeln Sie das übergeordnete Element in self.parent: Wenn Sie self.votes() aufrufen, rufen Sie die Funktion tatsächlich auf, und Sie werden die Funktion zerstören, bevor sie geöffnet wird.

Zusätzlich versuchen, die Funktionsparameter innerhalb einer Klasse als (Selbst-, ...) Strukturierung nicht (..., Selbst)

from tkinter import * 


class application: 

    def __init__(self,parent): 
     self.parent = parent 
     startContainer = Frame(parent) 
     startContainer.pack() 

     self.lbl = Label(startContainer,text="Please choose from the following: \nFaith Points (F) \nBanqueting Goods (B) \nEnter Honour (E) ") 
     self.lbl.pack() 

     self.btn1 = Button(startContainer,text="Votes", command=self.votes).pack() 
     self.btn2 = Button(startContainer,text="Gold Tithe",command=self.gold(startContainer)).pack() 

    def votes(self): 
     print("test") 
     self.parent.destroy() 

    def gold(self, parent): 
     pass 


window = Tk() 
app = application(window) 
window.mainloop()