Skip to main content
 首页 » 编程设计

python之将 kivy 小部件保存到文件

2025年05月04日12over140

因此,我尝试使用 cpickle 将 kivy 小部件保存到文件中,但出现错误。

from kivy.uix.widget import Widget 
import cPickle as pickle 
 
foo = Widget() 
bar = open('bar.dat', 'w') 
pickle.dump(foo, bar) 
bar.close() 

给出像这样的回溯

Traceback (most recent call last): 
  File ".last_tmp.py", line 6, in <module> 
    pickle.dump(foo, bar) 
  File "QPython/build/python-install/lib/python2.7/copy_reg.py", line 71, in_reduce_ex 
TypeError: __init__() takes exactly 0 positional arguments(1 given) 

有办法解决这个问题吗?或者是否有更好的方法将小部件保存到文件以备后用?

请您参考如下方法:

看起来使用更高的 protocol可能有帮助:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
 
try: 
    import cPickle as pickle 
except: 
    import pickle 
 
from kivy.uix.widget import Widget 
 
w = Widget() 
w.test = 5 
data_string = pickle.dumps(w, protocol=pickle.HIGHEST_PROTOCOL) 
 
x = pickle.loads(data_string) 
print x.test