保存和加载一个复杂的tkinter应用程序的GUI



我有一个非常复杂的tkinter应用程序,它是一个编辑器,目前它和window的记事本没有太大的不同但它会有很多它没有的功能。问题是,我没有正确理解用于保存gui在这个主题的方式:

保存和加载GUI-tkinter - Stack Overflow

例如,为什么save_state(self)不在Example(tk.Frame)中定义,为什么甚至类也是一个帧?我的是一个Tk()小部件,这种方法可以工作吗?也不需要调用函数,他们是如何工作而不调用?你能告诉我"previous":,"expression":,"result":在这部分做什么吗?:

def save_state(self):
try:
data = {
"previous": self.previous_values,
"expression": self.expressionVar.get(),
"result": self.resultLabel.cget("text"),
}
with open(FILENAME, "wb") as f:
pickle.dump(data, f)
except Exception as e:
print
"error saving state:", str(e)
下面是我的代码:

我的编辑

您不应该担心示例中的代码,而应该关注概念。您需要编写两个函数:一个用于保存数据,一个用于恢复数据。

保存数据的函数必须将这些数据收集到某种数据结构中。您链接到的代码选择了一个简单的pickle值字典。你可以使用一个sqlite数据库,一个yaml文件,一个字典,一个自定义对象,任何你想要的。

恢复数据的函数必须在启动时读取数据,然后将数据放回相应的小部件中。

对于文本编辑器,您可能想要保存打开的文件的名称。所以,你的"保存"函数可以简单地将文件名列表写入文件。你的"reload"函数需要读取文件名列表,对于每个文件,它可以在编辑器中打开一个选项卡。

你需要做的唯一一件事就是安排"save"退出时调用的函数。如果你有一个退出程序的函数,你可以在那里添加它。在您链接到的代码中,它通过执行root.wm_protocol("WM_DELETE_WINDOW", self.save_state)来安排在程序退出时自动调用该函数。

最新更新