我正在开发一个相当大的python应用程序(wxpython),该应用程序允许进行数据分析工作流。执行工作流的所有步骤可能会很长,并且用户不可能一次完成所有操作。他更可能希望在不同的时间点执行处理的不同部分。因此,能够使用某种“保存项目”功能来存储应用程序的当前状态非常方便。打开应用程序并加载项目文件将像以前一样设置应用程序,并允许其继续上次停止的位置。
但是,我有大量对象要保存,其中大多数都包含来自wxpython的属性。这会导致泡菜失败,并出现以下错误:
TypeError:无法腌制PySwigObject对象
有人对此有经验吗?获得所需功能的最佳实践是什么?是否有专门用于此的库?
谢谢。
最佳答案
wxPython是C ++库(称为wxWidgets)的包装。因此,您不能使用常规的Python序列化来保存其状态。但是,您可以使用persist库来保存大多数小部件的状态:http://wxpython.org/Phoenix/docs/html/lib.agw.persist.html
我不确定何时将该库添加到wxPython中,但是我猜它是在2.9或2.8的最新版本中。否则,您可能可以在最新版本的2.8的源代码中找到它。
正如其他人所说,通常最好先保存进程的状态,然后在启动时将该信息加载回GUI。
关于python - 如何在大型wxpython应用程序中存储项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18429404/