Tkinter GUI使用自己的按钮和条目创建另一个框架,如何保存此产品以随时加载?

问题描述:

我创建了一个tkinter GUI,它根据输入的数据创建另一个带有自己的按钮,条目和函数的框架。Tkinter GUI使用自己的按钮和条目创建另一个框架,如何保存此产品以随时加载?

现在,我希望用户能够将此产品保存为文件,并且能够在需要时打开它,并且具有与创建的相同的按钮和条目。我试过filedialog.asksaveasfilename(defaultextension=... )但它不起作用。我一直在寻找tkinter文件的文件类型。但是也许,因为我是python的新手,我没有看到找到答案的正确途径。如果有人能帮助我,我将非常感激。

+0

* *有没有这样的事情* Tkinter的文件*,Tkinter的是Python的库。所以* tkinter文件*是.py或.pyw文件(或任何打包的可执行文件)。你究竟想要完成什么,最终的目标是什么? –

+0

GUI根据用户输入的信息创建另一个框架。这个新的GUI具有从某些文件和按钮获取的按钮,可以在特定的网页中打开浏览器。这个过程是用户输入很长,所以我想要的是保存这个新窗口(GUI),这样用户就不必再重复创建相同的GUI。 – Mikaelo

+0

因此,每次用户加载程序时,都会加载用户上次输入的信息? –

请尝试玩下面的内容。它做什么,我认为你需要它:“我一直在寻找一个Tkinter的文件的文件类型”

from tkinter import * 
import json 

class App: 
    def __init__(self, root): 
     self.root = root 
     self.keys = ["0", "1", "2"] 
     self.widget = [(Label(self.root), Entry(self.root)), (Label(self.root), Entry(self.root)), (Label(self.root), Entry(self.root))] 
     self.button = Button(self.root, text="Save", command=self.save) 
     for i in self.widget: 
      [1].pack() 
     for i in self.widget: 
      i[0].pack() 
     self.button.pack() 
     try: 
      with open("data.json", "r") as f: 
       self.data = json.load(f) 
       f.close() 
       for i in self.keys: 
        self.widget[int(i)][0].configure(text=self.data[i]) 
      print(self.data) 
     except FileNotFoundError: 
      print("File not found") 
     except KeyError: 
      print("Keys do not match") 
    def save(self): 
     for (i, c) in self.widget: 
      i.configure(text=c.get()) 
     with open("data.json", "w") as f: 
      json.dump({self.keys[0]: self.widget[0][1].get(), self.keys[1]: self.widget[1][1].get(), self.keys[2]: self.widget[2][1].get()}, f) 
      f.close() 

root = Tk() 
App(root) 
root.mainloop()