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.
Enregistrez une référence de contrôleur dans chaque page :
class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller
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
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()
Stockage des données dans le contrôleur :
Pour éviter couplage étroit, envisagez de stocker les données dans le contrôleur :
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()}
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"])
Accéder aux données du contrôleur :
class PageTwo(ttk.Frame): def print_it(self): value = self.controller.app_data["name"].get()
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!