【发布时间】:2023-04-03 00:08:02
【问题描述】:
我使用 tkinter 在 python 3 中创建了一个绘图应用程序。作为应用程序的一部分,我将保存包含形状(椭圆、线条、文本……)的小部件。并重新加载它们。我使用的是pickle模块,保存没有问题,但是当我重新加载它时,它只返回一个包含从1到N的整数的列表。就是这样。没有对象,没有形状。如何重建我的对象?
这是我保存和加载的两个功能:
def save_project(self):
output_file = filedialog.asksaveasfilename(filetypes=[('Text', '*.txt')], title='save project as')
try:
with open(output_file, 'wb') as output:
pickle.dump(self.stack, output)
output.close()
except FileNotFoundError:
self.log("Cancelled save or error in filename")
def load_project(self):
load_file = filedialog.askopenfilename(filetypes=[('Text','*.txt')], title='Load Project')
if not load_file: return
pickled_file_object = open(load_file, "rb")
pickled_file_object.seek(0)
try:
self.all_patterns = pickle.load(pickled_file_object)
except EOFError:
self.log("Error: End of file")
pickled_file_object.close()
try:
# The problem is here:
print(self.all_patterns)
pprint.pprint(self.all_patterns)
except:
self.log("Error: Project can not be loaded")
打印输出是:
[1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、20、21、22、23]
而保存的文本文件是:
8003 5d71 0028 4b01 4b02 4b03 4b04 4b05
4b06 4b07 4b08 4b09 4b0a 4b0b 4b0c 4b0d
4b0e 4b0f 4b10 4b11 4b12 4b14 4b15 4b16
4b17 652e
【问题讨论】:
-
self.stack
在你腌制之前是什么样子的? -
这只是一个我添加所有对象的列表。实际上它适用于撤消功能。我可以基于此删除形状。那么它应该是一种再次创建它们的方法
标签:
list
python-3.x
tkinter
pickle
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何从转储文件重建对象 – Python 3 - Python技术站