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
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] ...
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")
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(), ... }
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()
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!