我有一个用Tkinter构建的Python GUI,它具有多个小部件(滚动框,输入框,复选框等)。对于此项目,由于并非所有信息都将一次性完成,因此我需要一种方法来保存小部件中的内容,然后能够通过打开保存的文件再次将其填充到用户离开的地方。由于我对Python还是比较陌生,所以我只是想尝试一下大家以最简单的方式完成此操作的方法。我听说过使用shelve模块将信息保存为XML,只是保存为txt ...由于我无法为此使用SQL,因此正在寻找一种实现方法。谢谢
答案 0 :(得分:0)
根据要保存的数据量,除xml之外,我还建议研究pyhton附带的json或configparser,它们很简单。
我不确定这是否在您的问题范围内,或者您是否已解决此问题,但是您提到了将数据保存并加载回小部件中的问题。对此,tkinter Variable classes and the trace mehthod非常有用。后者也可以用于验证输入数据(最小密码长度等)
答案 1 :(得分:0)
仅此而已。我尝试使用货架,但最终使用了泡菜。它是 非常简单,并产生了我想要的结果。我可以保存来自 用户在输入框/单选按钮,滚动框等中,然后重新打开 二进制文件并将输入“恢复”到这些小部件。
import pickle as pk
"""Open File"""
def file_open():
designer_open_file = filedialog.askopenfilename(
initialdir="C:/",
defaultextension=".gd",
filetypes=(("GD", "*.gd"), ("All files", "*"))
)
if designer_open_file is None:
return
saved_gd_data = pk.load(open(designer_open_file, "rb"))
open_designer = saved_gd_data["gd_designer"]
designer_nameE.delete(0, END)
designer_nameE.insert(0, open_designer)
more data collected below...
"""Save Data"""
def file_save():
designer_save_file = filedialog.asksaveasfile(
initialdir="C:/", mode="w",
defaultextension=".db",
filetypes=(("GD", "*.gd"), ("All files", "*"))
)
if designer_save_file is None:
return
gd_save_name = designer_save_file.name
basename = os.path.basename(gd_save_name)
path = os.path.dirname(gd_save_name)
gd_data = {"gsd_designer": designer_nameE.get(), "gd_design": design_nameE.get(),
etc, etc.
pk.dump(gd_data, open(path + "/" + basename, "wb"))