2017-04-18 2 views
1

So mache ich Asteroiden und es ist in einem frühen Stadium. Ich habe eine Schaltfläche, aber die Befehlsfunktion ruft die Funktion nicht in derselben Klasse auf. Hier ist der Code:Aufruf eines Befehls in einer Schaltfläche funktioniert nicht

class parentWindow(): 

def play(self,master): 
    print("PARTY") 

def __init__(self,master): 
    self.master=master 
    self.master.title("Asteroids") 

    self.background_image = PhotoImage(file = "Stars.gif") 
    self.canvas = Canvas(self.master, width = 1920, height = 1080, bg = "black") 
    self.canvas.image = self.background_image 
    self.canvas.pack(expand = YES, fill = "both") 

    self.canvas.create_image(0,0, image= self.background_image, anchor = NW) 

    label1 = Label(text="ASTEROIDS", fg="white", bg="black", height=3, width=10) 
    label1.config(font=("arcadeclassic", 50)) 
    label1.place(x=775, y=200) 

    button1 = Button(text = "Play", command= play) 
    button1.place(x=900, y=600) 

Wenn ich dies (und den Rest) ich werde mit "Play ist nicht definiert" begrüßt. Danke für die Hilfe!

+0

Ihre Einrückungen scheinen kaputt zu sein. 'play' und' _init__' müssen innerhalb der 'class' Anweisung eingerückt werden. –

Antwort

1

Sie müssen den vollständigen Namen verwenden:

button1 = Button(text = "Play", command=self.play) 

Das allein gibt Ihnen einen neuen Fehler, da ‚Play‘ erwartet einen „Master“ Argument. Sie müssen die Wiedergabefunktion so ändern, dass nur das einzige Argument benötigt wird:

def play(self): 
    print("PARTY") 
Verwandte Themen