我正在努力了解泡菜是如何工作的。所以感谢这里的答案:Use pickle to load a state for class我开始明白如何存储东西。 但我有点陷入下一步行动。我想要做的是,一旦我点击保存按钮,它将显示一个带有值的按钮,一旦我点击按钮,它将把当前值设置为按钮上的值。下次当我再次运行程序时,我希望我的按钮仍然存在。 我想我需要做的是腌制按钮,以便它可以转储回来,但按钮是tkinter对象吗?如何存储它们并将它们加载到泡菜中?
import tkinter as tk
import pickle
class State:
def __init__(self):
self.val = 0
class start(tk.Frame):
LOADERBUTTONS = []
def __init__(self,*args,**kwargs):
tk.Frame.__init__(self,*args,**kwargs)
frame = tk.Frame(self,width=600,height=600)
self.state = State()
self.plusButton = tk.Button(self,text="plus",command=self.plus)
self.plusButton.pack()
self.valLabel1 = tk.Label(self)
self.valLabel1.pack()
self.saveButton = tk.Button(self,text="save",command=self.save)
self.saveButton.pack()
self.loadButton = tk.Button(self,text="load",command=self.load)
self.loadButton.pack()
def load(self):
self.state = pickle.load(open( "testtesttest.p", "rb" ))
self.valLabel1.config(text="%d"%(self.state.val))
def plus(self):
self.state.val += 1
self.valLabel1.config(text="%d"%(self.state.val))
def save(self):
pickle.dump(self.state, open( "testtesttest.p", "wb" ))
self.valButtonLoader = tk.Button(self,text="%d"%(hash(self.state.val))).pack()
start.LOADERBUTTONS.append(tk.Button(self.valButtonLoader))
if __name__=='__main__':
root = tk.Tk()
start(root).pack()
root.mainloop()
显然我正在尝试使用class属性来保存我拥有的所有按钮,但这似乎是一个死胡同。有什么想法吗?
非常感谢。