Python 保存和加载复杂tkinter应用程序的GUI
我有一个非常复杂的tkinter应用程序,它是一个编辑器,现在它和window的记事本并没有太大的不同,但它将有很多它没有的功能。问题是我没有正确理解本主题中保存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:
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保存到一个类中,或者即使没有类,我也能做到。我还问了一些问题