0

試してみてください。ピクルまたはディルを使用して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つの間のプロトコルのこのテーマのバリエーションがあります。

ウィジェットはどのような方法でもピクルできませんか? それができない場合、ウィジェットを他の方法でファイルに保存することはできますか? ウィジェット クラスのインスタンスも保存できずに、必要な情報を保存することは非常に困難です。

4

0 に答える 0