Maison > développement back-end > Tutoriel Python > Comment partager des données entre classes dans une application multipage ?

Comment partager des données entre classes dans une application multipage ?

Barbara Streisand
Libérer: 2024-11-02 08:17:29
original
346 Les gens l'ont consulté

How to Share Data Between Classes in a Multi-Page Application?

Comment accéder aux données variables entre les classes dans une application multipage

Dans une application multipage où chaque page est définie par un classe séparée, l'accès aux données variables entre les classes peut être difficile.

Exploiter le contrôleur

Une approche consiste à utiliser la classe du contrôleur d'application pour faciliter la communication entre les pages. Ajoutez une référence au contrôleur au constructeur de chaque page :

<code class="python">class PageOne(ttk.Frame):
    def __init__(self, parent, controller):
        self.controller = controller
        ...</code>
Copier après la connexion

Ensuite, ajoutez une méthode au contrôleur qui récupère une instance de page en fonction de son nom de classe :

<code class="python">class MyApp(Tk):
    ...
    def get_page(self, classname):
        for page in self.frames.values():
            if str(page.__class__.__name__) == classname:
                return page
        return None</code>
Copier après la connexion

Ensuite, à partir de dans une page, vous pouvez accéder aux données variables d'une autre 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 éviter un couplage étroit entre les pages, envisagez de stocker les données dans le contrôleur plutôt que dans des pages spécifiques :

<code class="python">class MyApp(Tk):
    def __init__(self):
        ...
        self.app_data = {"name": StringVar(),
                         "address": StringVar(),
                         ...
                        }</code>
Copier après la connexion

Puis, au sein de chaque page, référencez la structure des données du contrôleur lors de la création des widgets :

<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

Enfin, accédez directement aux données du contrôleur :

<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