繁体   English   中英

遍历wxPython中的控件以保存会话数据

[英]Iterating over controls in wxPython in order to save session data

我有一个用wxPython编写的GUI(带有boa构造函数)。 我想将用户会话保存到文件中,以在下次应用程序启动时加载。 我想避免通过迭代控件并将它们的值保存到字典来“手工”保存每个值。

有没有办法掌握应用程序中使用的所有wxID及其对应的小部件?

您根本不需要ID,只需从顶层窗口开始,然后使用wxWindow :: GetChildren()方法递归枚举所有子代。 然后,对于每个孩子,您将需要动态确定其类型(如果仅使用几种类型的控件,则更简单)并保存其值。 创建控件时,为控件指定名称 (而不是标签)可能比使用数字ID更方便地为每个控件指定唯一的标识符,这也可能会有用。

恕我直言,你要去错了。 最好不要将用户会话的状态存储在控件的值中。 状态应存储在“模型”中。 “视图”应在需要显示模型状态以及何时将状态保存到文件时查询模型。 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

这使很多事情变得容易,甚至琐碎,包括您的问题。

我将在wx.lib.agw中查看PersistenceManager机制。 这是它的原始文档: http : //xoomer.virgilio.it/infinity77/AGW_Docs/persist.persistencemanager.PersistenceManager.html

这是更新的文档: http : //wxpython.org/Phoenix/docs/html/lib.agw.persist.persistencemanager.PersistenceManager.html

这是一个概述其工作原理的页面: http : //wxpython.org/Phoenix/docs/html/lib.agw.persist.html

或者,您可能可以使用框架或面板的GetChildren()方法来获取所有小部件并从中获取值,但是我认为PersistenceManager会更有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM