hier ist ein Teil meines Codes aus den letzten Spiel, das ich versuchen, habePython Pickle die Daten nicht aktualisiert werden in tkinter
ich bin verwirrt über die Daten von [Beize] anwenden können nicht auf das Etikett geladen, um in [ tkinter]
es funktioniert, wenn ich bin speichern und Laden der Daten
from tkinter import *
import pickle
Prvs_controll = [3,3,3,3,3]
Prvs_size = [1,1,1,1,1]
GameData= [Prvs_controll, Prvs_size]
class MainGame(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
global canvas
self.parent.title('PythonEuropaGame')
self.pack(fill=BOTH, expand=1)
tkframe = Frame(self)
canvas = Canvas(self)
canvas.pack(fill = BOTH, expand = 1)
canvas.update()
def save():
global GameData
with open('Save_01.pickle', 'wb') as handle:
pickle.dump(GameData, handle)
print(GameData)
def load():
global canvas
global GameData
with open('Save_01.pickle', 'rb') as handle:
GameData = pickle.load(handle)
Label_size_b.configure(text = Prvs_size[0])
print(GameData)
def change_controll():
global GameData
GameData[0] = [9,9,9,9,9]
def change_size():
global GameData
GameData[1][0] += 150
Label_size_b.configure(text = Prvs_size[0])
root = Tk()
ex = MainGame(root)
root.geometry('900x650')
Label_size_a = Label(root, text = 'Size')
Label_size_b = Label(root, text = '---')
Label_size_a.place(x = 700, y = 195)
Label_size_b.place(x = 750, y = 195)
Button_save = Button(root, text = 'Save', command = save)
Button_load = Button(root, text = 'Load', command = load)
Button_size_add = Button(root, text = 'Upgrade', command = change_size)
Button_save.place(x = 700, y = 500)
Button_load.place(x = 750, y = 500)
Button_size_add.place(x = 800, y = 225)
zuerst rief ich change_size() und save(),
es „gedruckt [3, 3, 3 , 3, 3], [151, 1, 1, 1, 1]] "
und das Label [Label_size_b] hatte die Änderung der Größe angezeigt (es gedruckt "151) und es wird gespeichert.
Wenn ich jedoch das Modul neu starte und load() aufruft, werden immer noch die Daten über "[3, 3, 3, 3, 3], [151, 1, 1, 1, 1]]" gedruckt.
Aber das Hauptproblem ist Label [Label_size_b] als „1“ gedruckt, aber nicht „151“ , das meine ich etwas geändert, und laden Sie es, aber das Etikett immer noch die Originaldaten drucken! (Siehe oben auf Code)
Ich denke, es kann das "globale" Problem sein, aber ich kann keine Möglichkeit finden, es zu korrigieren.
Danke, es ist gelöst – Montague27
@ Montague27: nicht sicher, ob Sie meine letzte Aktualisierung bemerkt haben, aber es gibt ein ähnliches Problem in 'change_size()'. – mhawke
Ja, ich wusste es. : D – Montague27