Heim > Backend-Entwicklung > Python-Tutorial > Wie teile ich Daten zwischen verschiedenen Klassen in einer Tkinter-Anwendung?

Wie teile ich Daten zwischen verschiedenen Klassen in einer Tkinter-Anwendung?

Linda Hamilton
Freigeben: 2024-11-26 02:32:13
Original
355 Leute haben es durchsucht

How to Share Data Between Different Classes in a Tkinter Application?

Wie greife ich auf Variablen aus verschiedenen Klassen in tkinter zu?

Zugriff auf Daten von anderen Seiten

Beim Zugriff auf Daten von anderen Seiten in tkinter ist dies unerlässlich um einen Verweis auf die spezifische Seite zu haben, auf die Sie abzielen. In Ihrem Fall muss PageTwo die Variable self.v von PageOne abrufen.

Tkinter bietet hierfür einen einfachen Mechanismus. Fügen Sie dem Konstruktor jeder Seite ein self.controller-Attribut hinzu, das Zugriff auf das Controller-Objekt ermöglicht. Der Controller enthält Verweise auf alle Seiten, sodass Sie die Verweise jeder Seite abrufen können.

Fügen Sie dem Konstruktor jeder Seite die folgende Zeile hinzu, um das self.controller-Attribut festzulegen:

self.controller = controller
Nach dem Login kopieren

Als nächstes fügen Sie hinzu eine get_page-Methode für die SampleApp-Klasse, um Seitenverweise abzurufen:

class SampleApp(tk.Tk):
    ...
    def get_page(self, page_class):
        return self.frames[page_class]
    ...
Nach dem Login kopieren

Jetzt können Sie innerhalb jeder Seite auf das Objekt einer anderen Seite zugreifen mit der get_page-Methode des Controllers. In PageTwo können Sie beispielsweise wie folgt auf die v-Variable von PageOne zugreifen:

page1 = self.controller.get_page(PageOne)
page1.v.set("Hello, world")
Nach dem Login kopieren

Gemeinsame Daten verwenden

Eine elegantere Lösung besteht darin, gemeinsam genutzte Daten zu erstellen, auf die alle Seiten zugreifen können. Initialisieren Sie ein Wörterbuch in der SampleApp-Klasse und gewähren Sie jeder Seite Zugriff über den Controller:

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.shared_data = {
            "username": tk.StringVar(),
            "password": tk.StringVar(),
            ...
        }
Nach dem Login kopieren

Seiten können dann über den Controller auf die freigegebenen Daten zugreifen:

entry1 = tk.Entry(self, textvariable=self.controller.shared_data["username"])
username = self.controller.shared_data["username"].get()
Nach dem Login kopieren

Die Nutzung freigegebener Daten fördert lose Kopplung, wodurch Seitenänderungen einfacher werden, ohne andere Seiten zu beeinträchtigen. Der Controller dient als zentraler Bezugspunkt und reduziert die Abhängigkeit zwischen Seiten.

Das obige ist der detaillierte Inhalt vonWie teile ich Daten zwischen verschiedenen Klassen in einer Tkinter-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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