Heim > Backend-Entwicklung > Python-Tutorial > Warum wird der Parameter „Befehl' in Tkinter-Schaltflächen bei der Deklaration ausgeführt?

Warum wird der Parameter „Befehl' in Tkinter-Schaltflächen bei der Deklaration ausgeführt?

Barbara Streisand
Freigeben: 2024-10-19 07:57:30
Original
590 Leute haben es durchsucht

Why Does the

Ausführung des Schaltflächenparameters „Befehl“ bei Deklaration: Behoben

In tkinter soll der Parameter „Befehl“ des Schaltflächen-Widgets einen Rückruf ausführen, wenn die Schaltfläche aktiviert ist gedrückt. Es ist jedoch rätselhaft, warum die Callback-Funktion sofort bei der Deklaration ausgeführt wird und nicht erst, wenn auf die Schaltfläche geklickt wird.

Der Schlüssel liegt in der Auswertung von Parametern während der Instanzerstellung. Wenn Sie eine Funktion als „Befehl“-Parameter übergeben, wertet Python zunächst die Funktion aus und ruft sie mit allen in Klammern übergebenen Argumenten auf. Zum Beispiel im folgenden Code:

<code class="python">def Hello():
    print("Hi there!")

hi = Button(frame, text="Hello", command=Hello())</code>
Nach dem Login kopieren

Der Code ruft die Hello-Funktion auf, gibt aufgrund des Fehlens einer Return-Anweisung einen None-Wert zurück und übergibt diesen None-Wert als „Befehl“-Parameter an die Taste. Folglich wird der Rückruf nicht ausgeführt, wenn auf die Schaltfläche geklickt wird, und die erste Auswertung gibt „Hallo!“ aus.

Um dieses Problem zu beheben und sicherzustellen, dass der Rückruf nur ausgeführt wird, wenn auf die Schaltfläche geklickt wird, übergeben Sie die Funktion selbst, ohne Klammern:

<code class="python">hi = Button(frame, text="Hello", command=Hello)</code>
Nach dem Login kopieren

Diese Änderung behält die Hello-Funktion als aufrufbares Objekt bei, das beim Klicken auf die Schaltfläche aufgerufen wird.

Verstehen der grundlegenden Unterschiede zwischen Funktionsobjekten und ihren Rückgabewerten ist in diesem Zusammenhang von entscheidender Bedeutung. Das Funktionsobjekt wird durch Funktionsname referenziert, während Funktionsname() den Rückgabewert darstellt. Während Ersteres aufrufbar ist, ist Letzteres das Ergebnis des Aufrufs der Funktion.

Im Wesentlichen ist es beim Definieren des „Befehls“-Parameters einer Schaltfläche unbedingt erforderlich, das Funktionsobjekt und nicht seinen Rückgabewert zu übergeben, um vorzeitige Ergebnisse zu vermeiden Ausführung. Diese Unterscheidung ebnet den Weg für eine nahtlose Rückruffunktion beim Klicken auf die Schaltfläche.

Das obige ist der detaillierte Inhalt vonWarum wird der Parameter „Befehl' in Tkinter-Schaltflächen bei der Deklaration ausgeführt?. 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