将tkinter按钮存储到泡菜中

时间:2016-11-24 02:26:37

标签: python tkinter pickle

我正在努力了解泡菜是如何工作的。所以感谢这里的答案: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属性来保存我拥有的所有按钮,但这似乎是一个死胡同。有什么想法吗?

非常感谢。

0 个答案:

没有答案