我正在开发一个相当大的 python 应用程序 (wxpython),它允许数据分析的工作流程。执行工作流的所有步骤可能会很长,用户不太可能一次完成所有操作。他更有可能更愿意在不同的时间点进行处理的不同部分。因此,能够使用某种“保存项目”功能来存储应用程序的当前状态将非常方便。打开应用程序并加载项目文件将像以前一样设置应用程序,并允许用户从他/她上次中断的地方继续。
但是我有大量对象要保存,其中大部分都充满了来自 wxpython 的属性。这会导致 pickle 失败并出现以下错误: 类型错误:无法腌制 PySwigObject 对象
有没有人有这方面的经验?获得所需功能的最佳做法是什么?是否有专门用于此的图书馆?
谢谢。
请您参考如下方法:
wxPython 是一个名为 wxWidgets 的 C++ 库的包装器。所以你不能使用普通的 Python 序列化来保存它的状态。但是,您可以使用持久库来保存大多数小部件的状态:http://wxpython.org/Phoenix/docs/html/lib.agw.persist.html
我不确定这个库是什么时候添加到 wxPython 中的,但我猜它是在 2.9 或最新版本的 2.8 中添加的。否则,您可能可以在最新版本的 2.8 源代码中找到它。
正如其他人所说,通常最好只保存进程的状态,然后在进程启动时将该信息加载回 GUI。
