2

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

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

有没有人有这方面的经验?获得所需功能的最佳实践是什么?有专门的图书馆吗?

谢谢。

4

1 回答 1

1

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

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

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

于 2013-08-26T14:02:06.007 回答