问题:
在多页面 Tkinter 中应用程序中,如何从一个页面中的另一个页面中的 Entry 小部件访问变量数据?每次尝试都会引发异常。
如何利用控制器:
鉴于应用程序现有的控制器概念,使用它来促进页面之间的通信。
在每个页面中保存控制器引用:
class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller
创建一个控制器方法以返回给定其类名的页面:
class MyApp(Tk): def get_page(self, classname): for page in self.frames.values(): if str(page.__class__.__name__) == classname: return page
访问其他页面的公共成员:
class PageTwo(ttk.Frame): def print_it(self): page_one = self.controller.get_page("PageOne") value = page_one.some_entry.get()
在控制器中存储数据:
避免紧密耦合,考虑在控制器中存储数据:
在控制器中创建数据结构(例如字典):
class MyApp(Tk): def __init__(self): self.app_data = {"name": StringVar()}
修改页面以在创建小部件时引用控制器:
class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller=controller self.some_entry = ttk.Entry(self, textvariable=self.controller.app_data["name"])
从控制器访问数据:
class PageTwo(ttk.Frame): def print_it(self): value = self.controller.app_data["name"].get()
以上是如何从多页面 Tkinter 应用程序中的条目小部件访问变量数据?的详细内容。更多信息请关注PHP中文网其他相关文章!