Wie übergebe ich Daten zwischen Seiten in einer mehrseitigen Tkinter-Anwendung?

Patricia Arquette
Freigeben: 2024-11-02 09:12:02
Original
153 Leute haben es durchsucht

How to Pass Data Between Pages in a Tkinter Multi-Page Application?

So greifen Sie auf variable Daten aus einer Klasse zu

Problem:

Wie geht das in einer mehrseitigen Anwendung mit Tkinter? Kann eine Klasse auf einer Seite auf variable Daten zugreifen, die in einer Klasse auf einer anderen Seite gespeichert sind?

Nutzung Ihres Controllers:

Angenommen, Sie verwenden bereits einen Controller kann es für die Kommunikation zwischen Seiten nutzen.

  1. Speichern Sie auf jeder Seite einen Verweis auf den Controller:

    <code class="python">class PageOne(ttk.Frame):
     def __init__(self, parent, controller):
         self.controller = controller
         ...
    
    class PageTwo(ttk.Frame):
     def __init__(self, parent, controller):
         self.controller = controller
         ...</code>
    Nach dem Login kopieren
  2. Erstellen Sie eine Methode im Controller zum Abrufen einer Seite basierend auf ihrem Klassennamen:

    <code class="python">class MyApp(Tk):
     def get_page(self, classname):
         '''Returns an instance of a page given it's class name as a string'''
         for page in self.frames.values():
             if str(page.__class__.__name__) == classname:
                 return page
         return None</code>
    Nach dem Login kopieren
  3. Verwenden Sie auf der Seite, die auf die Daten zugreifen muss, die Methode get_page:

    <code class="python">class PageTwo(ttk.Frame):
     def print_it(self):
         page_one = self.controller.get_page("PageOne")
         value = page_one.some_entry.get()
         print ('The value stored in StartPage some_entry = %s' % value)</code>
    Nach dem Login kopieren

Speichern von Daten im Controller:

Um die Kopplung zwischen Seiten zu reduzieren, sollten Sie die gemeinsamen Daten im Controller speichern.

  1. Erstellen Sie eine Datenstruktur im Controller, um die Variablen zu speichern:

    <code class="python">class MyApp(Tk):
     def __init__(self):
         ...
         self.app_data = {"name":    StringVar(),
                          "address": StringVar(),
                          ...
                         }</code>
    Nach dem Login kopieren
  2. Aktualisieren Sie die Seiten, um auf die Daten des Controllers zu verweisen:

    <code class="python">class PageOne(ttk.Frame):
     def __init__(self, parent, controller):
         self.controller=controller
         ...
         self.some_entry = ttk.Entry(self,
             textvariable=self.controller.app_data["name"], ...) </code>
    Nach dem Login kopieren
  3. Zugriff auf die Daten vom Controller:

    <code class="python"> def print_it(self):
         value = self.controller.app_data["address"].get()
         ...</code>
    Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie übergebe ich Daten zwischen Seiten in einer mehrseitigen 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!