J'ai créé une application de peinture dans python 3 en utilisant tkinter. Dans le cadre de l'application je vais sauvegarder le widget qui contient des formes (ovale, ligne, texte, ...). et je les recharge à nouveau. J'utilise le module pickle et il n'y a pas de problème avec save, mais quand je le recharge il me suffit de me renvoyer une liste contenant des entiers de 1 à N. c'est tout. pas d'objets, pas de formes. Comment puis-je reconstruire mes objets? ici est mon deux fonction de sauvegarder et de la charge:Comment reconstruire des objets à partir d'un fichier de vidage - 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")
la sortie imprimée est: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 , 14, 15, 16, 17, 18, 20, 21, 22, 23]
tandis que le fichier texte enregistré est:
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
À quoi ressemblait 'self.stack' avant de le décaper? – jasonharper
C'est juste une liste à laquelle j'ajoute tous les objets. En fait, cela fonctionne pour une fonction Annuler. Je peux supprimer les formes basées sur cela. alors il devrait être un moyen de les créer à nouveau –