Comment transmettre des données entre les pages dans une application multipage Tkinter ?

Patricia Arquette
Libérer: 2024-11-02 09:12:02
original
153 Les gens l'ont consulté

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

Comment accéder aux données variables d'une classe

Problème :

Dans une application multipage utilisant Tkinter, comment Une classe sur une page peut-elle accéder aux données variables stockées dans une classe sur une page différente ?

Exploiter votre contrôleur :

En supposant que vous utilisez déjà un contrôleur, vous peut l'exploiter pour la communication entre les pages.

  1. Stocker une référence au contrôleur dans chaque page :

    <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>
    Copier après la connexion
  2. Créer une méthode dans le contrôleur pour récupérer une page en fonction de son nom de classe :

    <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>
    Copier après la connexion
  3. Dans la page qui doit accéder aux données, utilisez la méthode 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>
    Copier après la connexion

Stockage des données dans le contrôleur :

Pour réduire le couplage entre les pages, pensez à stocker les données partagées dans le contrôleur.

  1. Créer une structure de données dans le contrôleur pour stocker les variables :

    <code class="python">class MyApp(Tk):
     def __init__(self):
         ...
         self.app_data = {"name":    StringVar(),
                          "address": StringVar(),
                          ...
                         }</code>
    Copier après la connexion
  2. Mettre à jour les pages pour référencer les données du contrôleur :

    <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>
    Copier après la connexion
  3. Accédez aux données du responsable du traitement :

    <code class="python"> def print_it(self):
         value = self.controller.app_data["address"].get()
         ...</code>
    Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!