試してみてください。ピクルまたはディルを使用して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
2つの間のプロトコルのこのテーマのバリエーションがあります。
ウィジェットはどのような方法でもピクルできませんか? それができない場合、ウィジェットを他の方法でファイルに保存することはできますか? ウィジェット クラスのインスタンスも保存できずに、必要な情報を保存することは非常に困難です。