如何在大型wxpython应用程序中存储项目

时间:2013-08-25 13:19:42

标签: python wxpython

我正在开发一个相当大的python应用程序(wxpython),它允许数据分析的工作流程。执行工作流程的所有步骤可能会很长,并且用户不太可能同时执行所有操作。他更倾向于在不同的时间点处理不同的处理部分。因此,能够通过某种“保存项目”功能存储应用程序的当前状态非常方便。打开应用程序并加载项目文件将像以前一样设置应用程序,并允许一个人继续他/她上次离开的地方。

但是我有大量要保存的对象,其中大部分都充满了来自wxpython的属性。这会导致pickle失败,并出现以下错误: TypeError:无法pickle PySwigObject对象

有没有人有这方面的经验?获得所需功能的最佳做法是什么?是否有专门讨论这个的图书馆?

谢谢你。

1 个答案:

答案 0 :(得分:1)

wxPython是一个名为wxWidgets的C ++库的包装器。因此,您无法使用普通的Python序列化来保存其状态。但是,您可以使用persist库来保存大多数小部件的状态:http://wxpython.org/Phoenix/docs/html/lib.agw.persist.html

我不确定这个库何时被添加到wxPython中,但我猜它是2.9或2.8的最新版本。否则你可以在2.8的源代码的最新版本中找到它。

正如其他人所说,通常最好只保存进程的状态,然后在启动时将该信息加载回GUI。