„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 > Wann wird die Parameterfunktion „Befehl“ der Schaltfläche ausgeführt?

Wann wird die Parameterfunktion „Befehl“ der Schaltfläche ausgeführt?

Veröffentlicht am 09.11.2024
Durchsuche:517

When is the Button\'s \

Ausführung des „command“-Parameters des Buttons bei der Deklaration: Das Geheimnis lüften

In Python tkinter ist der „command“-Parameter für das Button-Widget dazu gedacht, eine Funktion anzugeben ausgeführt werden, wenn die Taste gedrückt wird. Ein häufiges Missverständnis unter Anfängern ist jedoch die Beobachtung, dass die mit „Befehl“ verknüpfte Funktion bereits zum Zeitpunkt der Schaltflächendeklaration ausgeführt wird.

Um dieses Verhalten zu verstehen, müssen wir uns damit befassen, wie Python mit Funktionsparametern umgeht. Wenn Sie eine Funktion als Parameter übergeben, gibt es zwei Möglichkeiten:

  • Übergabe des Funktionsobjekts: Dies wird durch einfache Referenzierung des Funktionsnamens erreicht, z. B. command=Hello.
  • Übergabe des Rückgabewerts der Funktion: Dies geschieht durch Einschließen des Funktionsaufrufs in Klammern, z. B. command=Hello().

In dem von Ihnen bereitgestellten Beispielcode wird Hello() als Parameter an übergeben das Button-Widget, was bedeutet, dass die Funktion sofort ausgeführt wird und ihr Rückgabewert an „command“ übergeben wird. Da Hello() nichts zurückgibt, gibt es None zurück, das dann dem „command“-Parameter der Schaltfläche zugewiesen wird und praktisch nichts bewirkt.

Um dieses Problem zu beheben und die Funktion nur auszuführen, wenn auf die Schaltfläche geklickt wird, Sie sollten das Funktionsobjekt wie folgt übergeben:

hi = Button(frame, text="Hello", command=Hello)

Auf diese Weise wird beim Drücken der Taste Folgendes angezeigt: Die Funktion „Hello()“ wird aufgerufen und führt den vorgesehenen Code aus.

Wenn Sie außerdem Argumente an die Funktion übergeben müssen, können Sie den Funktionsaufruf mit einem Lambda-Ausdruck umschließen, wie unten gezeigt:

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

In diesem Fall sorgt der Lambda-Ausdruck dafür, dass Goodnight() Die Funktion wird zum Zeitpunkt der Schaltflächendeklaration nicht ausgeführt, sondern wartet, bis auf die Schaltfläche geklickt und der Befehl ausgeführt wird.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729295717 Bei Verstößen 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