Maison > développement back-end > Tutoriel Python > Comment accéder aux données variables à partir d'un widget d'entrée dans une application Tkinter multipage ?

Comment accéder aux données variables à partir d'un widget d'entrée dans une application Tkinter multipage ?

Patricia Arquette
Libérer: 2024-11-04 04:52:29
original
353 Les gens l'ont consulté

How to Access Variable Data from an Entry Widget in a Multi-Page Tkinter Application?

Extraire des données variables d'une classe dans une application multipage

Question :

Dans un Tkinter multipage application, comment accéder aux données variables d'un widget Entrée dans une page dans une autre page ? Chaque tentative génère une exception.

Comment exploiter le contrôleur :

Étant donné le concept de contrôleur existant de l'application, utilisez-le pour faciliter la communication entre les pages.

  1. Enregistrez une référence de contrôleur dans chaque page :

    class PageOne(ttk.Frame):
        def __init__(self, parent, controller):
            self.controller = controller
    Copier après la connexion
  2. Créez une méthode de contrôleur pour renvoyer une page en fonction de son nom de classe :

    class MyApp(Tk):
        def get_page(self, classname):
            for page in self.frames.values():
                if str(page.__class__.__name__) == classname:
                    return page
    Copier après la connexion
  3. Accéder aux membres publics d'autres pages :

    class PageTwo(ttk.Frame):
        def print_it(self):
            page_one = self.controller.get_page("PageOne")
            value = page_one.some_entry.get()
    Copier après la connexion

Stockage des données dans le contrôleur :

Pour éviter couplage étroit, envisagez de stocker les données dans le contrôleur :

  1. Créez une structure de données dans le contrôleur (par exemple, un dictionnaire) :

    class MyApp(Tk):
        def __init__(self):
            self.app_data = {"name": StringVar()}
    Copier après la connexion
  2. Modifier les pages pour référencer le contrôleur lors de la création de widgets :

    class PageOne(ttk.Frame):
        def __init__(self, parent, controller):
            self.controller=controller
            self.some_entry = ttk.Entry(self, textvariable=self.controller.app_data["name"])
    Copier après la connexion
  3. Accéder aux données du contrôleur :

    class PageTwo(ttk.Frame):
        def print_it(self):
            value = self.controller.app_data["name"].get()
    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