Maison  >  Article  >  développement back-end  >  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
Patricia Arquetteoriginal
2024-11-02 09:12:02155parcourir

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>
  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>
  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>

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>
  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>
  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>

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:
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