2016-03-23 9 views
0

CONTEXT: Ich programmiere ein Wort Spiel, wo ein 3x3 Gitter mit 5 Buchstaben Wörter für den Benutzer angezeigt wird und dann das Gitter ändert und 1 Wort wird entfernt und ersetzt. Der Benutzer wird dann aufgefordert anzugeben, welches Wort entfernt wurde und welches es ersetzt hat.Seite ändern Befehl nicht in einer Definition innerhalb einer Klasse

PROBLEM: In der Klasse, in der der Benutzer die Wörter eingeben muss, funktioniert meine Auswahlanweisung in meinem Validierungsdef in der Klasse korrekt, jedoch wird die Seite nicht geändert.

Codebeispiel:

self.submit_button = ttk.Button(self, text="submit", command = self.validate1) 
self.submit_button.grid(row=5, column=2) 


def validate1(self): 
     word = (self.entry.get()+"\n") 
     print("input",word) #printed for testing purposes 
     print(sub) #printed for testing purposes 
if word == sub: 
     lambda:controller.show_frame(StartPage) 
else: 
     print("incorrect") 

Hinweis: die Validierung funktioniert gut, wie ich mit nur Druck falsch in der Schale erprobt, aber wenn ich Lambda verwende Seite nichts ändern passiert, ich nicht auch erhalten jeder Fehler Vielen Dank im Voraus für Ihre Hilfe

+0

was 'sub' denn sein? –

+0

Oh sorry, sub ist die Variable für das Wort, das ersetzt wurde, ich habe es gerade von einer anderen Klasse übergeben. –

Antwort

0

self.controller = Controller

if word == sub: 
     self.controller.show_frame(StartPage) 
1

lambda nur einen Befehl erstellen, ist es nicht läuft. Sie brauchen nicht lambda überhaupt zu benutzen, rufen Sie einfach die Funktion direkt:

if word == sub: 
    controller.show_frame(StartPage) 
+0

Ich habe Ihre Änderungen hinzugefügt, aber ich bekomme einen Fehler, der Controller ist nicht definiert, was am ehesten mit meinen Parametern in der def tun wird, atm es ist nur selbst muss ich etwas hinzufügen? Vielen Dank noch einmal im Voraus –

Verwandte Themen