Maison > développement back-end > Tutoriel Python > Comment transmettre des données entre les pages dans une application multipage Tkinter ?

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

Patricia Arquette
Libérer: 2024-11-02 09:12:02
original
314 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!

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