尽我所能,我无法使用泡菜或莳萝来腌制 kivy 小部件。我已经在这里查看了类似的问题,但给出的答案似乎不起作用。我已经尝试了莳萝和泡菜的所有协议。尝试这样做:
from kivy.uix.widget import Widget
import pickle
widget=Widget()
pickle.dump(widget,open('example.pkl','wb'),protocol=4)
给出如下错误:
Traceback (most recent call last):
File "nonsense.py", line 9, in <module>
pickle.dump(widget,open('test.pkl','wb'),protocol=4)
_pickle.PicklingError: Can't pickle <class 'weakref'>: attribute lookup weakref on builtins failed
不同的协议给出不同的错误。我也尝试过使用 dill(因为它可以腌制更多类型)并且我得到一组不同的错误,具体取决于所使用的协议。
对于协议 0:
TypeError: __init__() takes exactly 0 positional arguments (1 given)
对于协议 4:
_pickle.PicklingError: args[0] from __newobj_ex__ args has the wrong class
两者之间的协议在这个主题上有所不同。
小部件是否无法以任何方式腌制?如果做不到这一点,是否可以以其他方式将小部件保存到文件中?如果不能保存小部件类的任何实例,就很难保存我需要的信息。