Die get-Funktion von Tkinter Entry liefert nichts: Eine umfassende Erklärung
Beim Versuch, Benutzereingaben von einem Tkinter Entry-Widget mithilfe von get() abzurufen Wenn Sie die Funktion verwenden, stoßen Sie möglicherweise auf einen leeren Rückgabewert. Dieses scheinbar verwirrende Problem ergibt sich aus der asynchronen Natur von Tkinter und der Reihenfolge der Funktionsausführung.
Im bereitgestellten Code-Snippet versuchen Sie, den Wert des Eintrags unmittelbar nach seiner Erstellung abzurufen. Tkinter folgt jedoch einem „Ereignisschleifen“-Modell, bei dem GUI-Ereignisse verarbeitet werden, nachdem die Funktion mainloop() aufgerufen wurde. Dies bedeutet, dass, wenn die Funktion get() vor mainloop() aufgerufen wird, noch keine Benutzereingabe erfolgt ist, was zu einem leeren Rückgabewert führt.
Um dieses Problem zu lösen, besteht ein Ansatz darin, get() aufzurufen innerhalb einer separaten Funktion, die an ein Ereignis gebunden ist, beispielsweise einen Tastenklick. Ein Beispiel für einen solchen klassenbasierten Ansatz wird bereitgestellt:
import tkinter as tk
class SampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.entry = tk.Entry(self)
self.button = tk.Button(self, text="Get", command=self.on_button)
self.button.pack()
self.entry.pack()
def on_button(self):
print(self.entry.get())
app = SampleApp()
app.mainloop()
In diesem Beispiel wird die Funktion get() innerhalb der Funktion on_button aufgerufen, die dem Klickereignis einer Schaltfläche zugeordnet ist. Wenn auf die Schaltfläche geklickt wird, wird der Wert des Eintrags abgerufen und gedruckt, sodass Sie effektiv mit der Benutzereingabe interagieren können.
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