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
Barbara Streisandoriginal
2024-11-02 08:17:29339parcourir

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>

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>

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>

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>

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>

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>

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