„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum wird die Schaltfläche „Befehl“ sofort ausgeführt, wenn sie deklariert wird?

Warum wird die Schaltfläche „Befehl“ sofort ausgeführt, wenn sie deklariert wird?

Veröffentlicht am 01.11.2024
Durchsuche:985

Why Does the Button \

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

In Python ist der Parameter „Befehl“ des Schaltflächen-Widgets verantwortlich Definieren einer Callback-Funktion. Benutzer können jedoch verwirrt sein, wenn diese Rückruffunktion scheinbar sofort nach der Deklaration der Schaltfläche ausgeführt wird.

Dieses Problem tritt auf, wenn dem Parameter „Befehl“ ein Funktionsaufrufausdruck anstelle eines Funktionsobjekts zugewiesen wird. Zum Beispiel:

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

Button(frame, text="Hello", command=Hello())  # Function call expression

In diesem Code ruft der Ausdruck „Hello()“ sofort die Hello-Funktion auf und gibt ihren Rückgabewert zurück. Infolgedessen wird die Rückruffunktion ausgeführt, bevor der Button erstellt wird, was zu der Meldung „Hallo!“ führt. Nachricht wird an die Konsole ausgegeben.

Um dieses Problem zu vermeiden und das Funktionsobjekt dem Parameter „command“ zuzuweisen, verwenden Sie den Funktionsnamen ohne Klammern:

Button(frame, text="Hello", command=Hello)  # Function object

Funktionsobjekte enthalten Verweise auf ihren Code, der ausgeführt wird, wenn der Rückruf aufgerufen wird. Wenn zusätzlich Argumente übergeben werden müssen, können Lambda-Ausdrücke verwendet werden:

Button(frame, text="Hello", command=lambda: Goodnight("Moon"))

In diesem Fall umschließt der Lambda-Ausdruck den Goodnight("Moon")-Aufruf und verzögert seine Ausführung, bis auf die Schaltfläche geklickt wird.

Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729295836 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3