Heim >Backend-Entwicklung >Python-Tutorial >Warum wird der Befehl meiner Tkinter-Schaltfläche sofort und nicht erst beim Klicken ausgeführt?
Unerwartete Schaltflächenauslösung in Tkinter: Funktionsreferenzen verstehen
In Tkinter können Sie beim Erstellen einer Schaltfläche einen Befehl angeben, der ausgeführt wird wenn auf die Schaltfläche geklickt wird. In Ihrem Codebeispiel wird der bereitgestellte Befehl jedoch sofort ausgeführt, wenn die Schaltfläche erstellt wird.
Um zu verstehen, warum dies geschieht, betrachten Sie den folgenden Codeausschnitt:
b = Button(admin, text='as', command=button('hey'))
Dieser Code ist entspricht:
result = button('hey') b = Button(admin, text='as', command=result)
Wenn Sie button('hey') innerhalb des Befehlsparameters aufrufen, rufen Sie die Funktion auf und führen sie sofort aus. Infolgedessen werden die Codes print('hey') und print('het') gedruckt, bevor tatsächlich auf die Schaltfläche geklickt wird.
Um dieses Problem zu beheben, müssen Sie einen Verweis auf die Funktion übergeben, ohne es ausführen. Lassen Sie dazu einfach die Klammern weg:
b = Button(admin, text='as', command=button)
Dadurch wird ein Verweis auf die Schaltflächenfunktion übergeben und diese wird ausgeführt, wenn auf die Schaltfläche geklickt wird, nicht wenn sie erstellt wird.
Alternativ können Sie Lambda-Funktionen verwenden, um eine anonyme Funktion zu erstellen, die die ursprüngliche Funktion mit dem gewünschten Argument aufruft:
b = Button(admin, text='as', command=lambda: button('hey'))
Das obige ist der detaillierte Inhalt vonWarum wird der Befehl meiner Tkinter-Schaltfläche sofort und nicht erst beim Klicken ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!