首页 > 后端开发 > Python教程 > 如何在 Tkinter 多页面应用程序中的页面之间传递数据?

如何在 Tkinter 多页面应用程序中的页面之间传递数据?

Patricia Arquette
发布: 2024-11-02 09:12:02
原创
240 人浏览过

How to Pass Data Between Pages in a Tkinter Multi-Page Application?

如何从类访问变量数据

问题:

在使用 Tkinter 的多页面应用程序中,如何一个页面上的类可以访问存储在不同页面上的类中的变量数据吗?

利用您的控制器:

假设您已经在使用控制器,您可以利用它进行页面之间的通信。

  1. 在每个页面中存储对控制器的引用:

    <code class="python">class PageOne(ttk.Frame):
     def __init__(self, parent, controller):
         self.controller = controller
         ...
    
    class PageTwo(ttk.Frame):
     def __init__(self, parent, controller):
         self.controller = controller
         ...</code>
    登录后复制
  2. 在控制器根据类名检索页面:

    <code class="python">class MyApp(Tk):
     def get_page(self, classname):
         '''Returns an instance of a page given it's class name as a string'''
         for page in self.frames.values():
             if str(page.__class__.__name__) == classname:
                 return page
         return None</code>
    登录后复制
  3. 在需要访问数据的页面中,使用 get_page 方法:

    <code class="python">class PageTwo(ttk.Frame):
     def print_it(self):
         page_one = self.controller.get_page("PageOne")
         value = page_one.some_entry.get()
         print ('The value stored in StartPage some_entry = %s' % value)</code>
    登录后复制

在控制器中存储数据:

为了减少页面之间的耦合,可以考虑将共享数据存储在控制器中。

  1. 在控制器中创建数据结构来存储变量:

    <code class="python">class MyApp(Tk):
     def __init__(self):
         ...
         self.app_data = {"name":    StringVar(),
                          "address": StringVar(),
                          ...
                         }</code>
    登录后复制
  2. 更新页面以引用控制器的数据:

    <code class="python">class PageOne(ttk.Frame):
     def __init__(self, parent, controller):
         self.controller=controller
         ...
         self.some_entry = ttk.Entry(self,
             textvariable=self.controller.app_data["name"], ...) </code>
    登录后复制
  3. 从控制器访问数据:

    <code class="python"> def print_it(self):
         value = self.controller.app_data["address"].get()
         ...</code>
    登录后复制

以上是如何在 Tkinter 多页面应用程序中的页面之间传递数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板