나는 python 3에서 tkinter를 사용하여 페인트 응용 프로그램을 만들었습니다. 응용 프로그램의 일부로 모양 (타원, 선, 텍스트 등)이 포함 된 위젯을 저장하려고합니다. 그리고 다시 그들을 다시로드하십시오. 나는 피클 모듈을 사용하고 저장에 아무런 문제가 없습니다,하지만 내가 그것을 다시로드하면 그것은 1에서 N까지의 정수를 포함하는 목록을 반환합니다. 아니 개체, 아니 셰이프. 객체를 재구성하려면 어떻게해야합니까? 여기서 내 두 함수 저장 하중 :덤프 파일에서 객체를 재구성하는 방법 - Python 3
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'은 절인하기 전에 어떤 모습 이었습니까? – jasonharper
모든 개체를 추가하는 목록 일뿐입니다. 실제로 그것은 실행 취소 (Undo) 기능을 위해 작동합니다. 그걸 기반으로 모양을 삭제할 수 있습니다. 그럼 다시 그들을 만드는 방법이어야합니다 –