Heim > Artikel > Backend-Entwicklung > Wie greife ich über ein Eingabe-Widget in einer mehrseitigen Tkinter-Anwendung auf variable Daten zu?
Frage:
In einem mehrseitigen Tkinter Wie greifen Sie in einer Anwendung auf variable Daten von einem Eintrags-Widget auf einer Seite innerhalb einer anderen Seite zu? Jeder Versuch löst eine Ausnahme aus.
So nutzen Sie den Controller:
Angesichts des vorhandenen Controller-Konzepts der App können Sie es verwenden, um die Kommunikation zwischen Seiten zu erleichtern.
Speichern Sie auf jeder Seite eine Controller-Referenz:
class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller
Erstellen Sie eine Controller-Methode, um eine Seite anhand ihres Klassennamens zurückzugeben:
class MyApp(Tk): def get_page(self, classname): for page in self.frames.values(): if str(page.__class__.__name__) == classname: return page
Zugriff auf öffentliche Mitglieder anderer Seiten:
class PageTwo(ttk.Frame): def print_it(self): page_one = self.controller.get_page("PageOne") value = page_one.some_entry.get()
Speicherung von Daten im Controller:
Zu vermeiden Bei enger Kopplung sollten Sie erwägen, Daten im Controller zu speichern:
Erstellen Sie eine Datenstruktur im Controller (z. B. Wörterbuch):
class MyApp(Tk): def __init__(self): self.app_data = {"name": StringVar()}
Ändern Sie Seiten, um beim Erstellen von Widgets auf den Controller zu verweisen:
class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller=controller self.some_entry = ttk.Entry(self, textvariable=self.controller.app_data["name"])
Zugriffsdaten vom Controller:
class PageTwo(ttk.Frame): def print_it(self): value = self.controller.app_data["name"].get()
Das obige ist der detaillierte Inhalt vonWie greife ich über ein Eingabe-Widget in einer mehrseitigen Tkinter-Anwendung auf variable Daten zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!