在 tkinter 中访问其他页面的数据时,这是必不可少的以获得对您所定位的特定页面的引用。在您的情况下,PageTwo 需要从 PageOne 检索 self.v 变量。
Tkinter 为此提供了一个简单的机制。将 self.controller 属性添加到每个页面的构造函数中,以提供对控制器对象的访问。控制器保存对所有页面的引用,使您能够检索任何页面的引用。
将以下行添加到每个页面的构造函数以建立 self.controller 属性:
self.controller = controller
接下来,添加SampleApp 类的 get_page 方法用于检索页面引用:
class SampleApp(tk.Tk): ... def get_page(self, page_class): return self.frames[page_class] ...
现在,在任何页面中,您都可以访问另一个页面的对象使用控制器的 get_page 方法。例如,在 PageTwo 中,您可以按如下方式访问 PageOne 的 v 变量:
page1 = self.controller.get_page(PageOne) page1.v.set("Hello, world")
更优雅的解决方案是创建所有页面都可以访问的共享数据。在 SampleApp 类中初始化一个字典,并通过控制器授予每个页面访问权限:
class SampleApp(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) self.shared_data = { "username": tk.StringVar(), "password": tk.StringVar(), ... }
然后页面可以通过控制器访问共享数据:
entry1 = tk.Entry(self, textvariable=self.controller.shared_data["username"]) username = self.controller.shared_data["username"].get()
利用共享数据促进松散耦合,使页面修改更容易,而不影响其他页面。控制器充当中心参考点,减少页面之间的依赖性。
以上是如何在 Tkinter 应用程序中的不同类之间共享数据?的详细内容。更多信息请关注PHP中文网其他相关文章!