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

Comment partager des données entre différentes classes dans une application Tkinter ?

Linda Hamilton
Libérer: 2024-11-26 02:32:13
original
385 Les gens l'ont consulté

How to Share Data Between Different Classes in a Tkinter Application?

Comment accéder aux variables de différentes classes dans tkinter ?

Accéder aux données à partir d'autres pages

Lors de l'accès aux données d'autres pages dans tkinter, il est essentiel pour avoir une référence à la page spécifique que vous ciblez. Dans votre cas, PageTwo doit récupérer la variable self.v de PageOne.

Tkinter fournit un mécanisme simple pour cela. Ajoutez un attribut self.controller au constructeur de chaque page, qui donne accès à l'objet contrôleur. Le contrôleur contient des références à toutes les pages, vous permettant de récupérer la référence de n'importe quelle page.

Ajoutez la ligne suivante au constructeur de chaque page pour établir l'attribut self.controller :

self.controller = controller
Copier après la connexion

Ensuite, ajoutez une méthode get_page à la classe SampleApp pour récupérer les références de page :

class SampleApp(tk.Tk):
    ...
    def get_page(self, page_class):
        return self.frames[page_class]
    ...
Copier après la connexion

Maintenant, dans n'importe quelle page, vous pouvez accéder à l'objet d'une autre page en utilisant la méthode get_page du contrôleur. Par exemple, dans PageTwo, vous pouvez accéder à la variable v de PageOne comme suit :

page1 = self.controller.get_page(PageOne)
page1.v.set("Hello, world")
Copier après la connexion

Utiliser des données partagées

Une solution plus élégante consiste à créer des données partagées auxquelles toutes les pages peuvent accéder. Initialisez un dictionnaire dans la classe SampleApp et accordez à chaque page l'accès via le contrôleur :

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.shared_data = {
            "username": tk.StringVar(),
            "password": tk.StringVar(),
            ...
        }
Copier après la connexion

Les pages peuvent ensuite accéder aux données partagées via le contrôleur :

entry1 = tk.Entry(self, textvariable=self.controller.shared_data["username"])
username = self.controller.shared_data["username"].get()
Copier après la connexion

L'utilisation des données partagées favorise la liberté couplage, facilitant les modifications de page sans affecter les autres pages. Le contrôleur sert de point de référence central, réduisant la dépendance entre les pages.

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