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

Python 保存和加载复杂tkinter应用程序的GUI,python,python-3.x,tkinter,serialization,pickle,Python,Python 3.x,Tkinter,Serialization,Pickle,我有一个非常复杂的tkinter应用程序,它是一个编辑器,现在它和window的记事本并没有太大的不同,但它将有很多它没有的功能。问题是我没有正确理解本主题中保存gui的方法: 例如,为什么save\u state(self)没有在example(tk.Frame)中定义,为什么连类都是框架?我的是一个Tk()?也不需要调用函数,而无需调用它们的工作方式吗?你能告诉我这部分的“上一个”:,“表达式”:,“结果”: def save_state(self): try:

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

例如,为什么
save\u state(self)
没有在
example(tk.Frame)
中定义,为什么连类都是框架?我的是一个
Tk()?也不需要调用函数,而无需调用它们的工作方式吗?你能告诉我这部分的
“上一个”:
“表达式”:
“结果”:

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文件、字典、自定义对象,无论您想要什么

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

对于文本编辑器,您可能需要保存打开文件的名称。因此,您的“save”函数可以简单地将文件名列表写入文件。“重新加载”函数需要读取文件名列表,对于每个文件,它可以在编辑器中打开一个选项卡


您需要做的另一件事是安排在退出时调用“save”函数。如果你有一个退出程序的功能,你可以把它添加到那里。在您链接到的代码中,它通过执行
root.wm\u协议(“wm\u DELETE\u WINDOW”,self.save\u state)”来安排在程序退出时自动调用函数。

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

保存数据的函数必须先收集数据,然后将数据收集到某种数据结构中。您链接到的代码选择了一个简单的值字典,该字典经过pickle处理。您可以使用sqlite数据库、yaml文件、字典、自定义对象,无论您想要什么

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

对于文本编辑器,您可能需要保存打开文件的名称。因此,您的“save”函数可以简单地将文件名列表写入文件。“重新加载”函数需要读取文件名列表,对于每个文件,它可以在编辑器中打开一个选项卡


您需要做的另一件事是安排在退出时调用“save”函数。如果你有一个退出程序的功能,你可以把它添加到那里。在您链接到的代码中,它安排在程序退出时通过执行
root.wm\u协议(“wm\u DELETE\u WINDOW”,self.save\u state)

自动调用该函数。请不要忘记它有菜单选项可供保存。您是否只保存文本?当然不,我正在尝试添加一个这样的函数到我的函数中。你没有任何类,那么你想保存什么?我想如果我能学会如何将Stringvariables保存到类中,或者即使没有类,我也可以这样做。我在上面问了一些问题。请不要忘记,它有菜单选项要保存。你是否只保存文本当然不,我正在尝试向我的类中添加一个这样的函数。你没有任何类,那么你想保存什么?我想如果我能学会如何将Stringvariables保存到一个类中,或者即使没有类,我也能做到。我还问了一些问题