Warum wird der Schaltflächenparameter „Befehl' ausgeführt, wenn er in tkinter deklariert wird?

Patricia Arquette
Freigeben: 2024-10-19 07:58:30
Original
666 Leute haben es durchsucht

Why Is Button Parameter

Button-Parameter „Command“-Ausführung erklärt

In Pythons tkinter stellt sich häufig die Frage: Warum ist der „command“-Parameter eines Buttons hingerichtet, wenn erklärt? Dieses Verhalten kann für Anfänger verwirrend sein.

Um dies zu verstehen, untersuchen wir den Python-Codeausschnitt, der das Problem verursacht:

def Hello():
    print("Hi there!")

hi = Button(frame, text="Hello", command=Hello())
Nach dem Login kopieren

Wie geschrieben ist der Parameter „command“ auf das Ergebnis gesetzt des Aufrufs der Hello-Funktion. In Python gibt der Aufruf einer Funktion mit Klammern, z. B. Hello(), jedoch den Wert zurück, den die Funktion erzeugt. Im Fall von Hello wird None zurückgegeben, da keine Return-Anweisung vorhanden ist.

Daher interpretiert es beim Erstellen des Button-Objekts „command=Hello()“ als „command=None“. Infolgedessen wird die Hello-Funktion sofort ausgeführt und „Hallo!“ ausgegeben. an die Konsole.

Um dieses Problem zu vermeiden und die Hello-Funktion nur dann auszuführen, wenn die Taste gedrückt wird, sollten Sie das Funktionsobjekt selbst als Befehl ohne Klammern übergeben:

hi = Button(frame, text="Hello", command=Hello)
Nach dem Login kopieren

Dies stellt sicher, dass die Hello-Funktion aufgerufen wird, wenn auf die Schaltfläche geklickt wird, und nicht zum Zeitpunkt der Deklaration.

Wenn Sie Argumente an die Funktion übergeben müssen, verwenden Sie einen Lambda-Ausdruck, um eine parameterlose aufrufbare Funktion zu erstellen. Dadurch können Sie die sofortige Auswertung der Funktion vermeiden und sie an den Befehlsparameter übergeben:

Goodnight = lambda: print("Goodnight, Moon")
hi = Button(frame, text="Hello", command=Goodnight)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum wird der Schaltflächenparameter „Befehl' ausgeführt, wenn er in tkinter deklariert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage