2017-10-10 8 views
0

입력 된 데이터에 따라 고유 한 버튼, 항목 및 기능을 가진 다른 프레임을 만드는 tkinter GUI를 만들었습니다.Tkinter GUI는 버튼과 항목이있는 다른 프레임을 만듭니다. 언제든지이 제품을로드하여 저장할 수 있습니까?

이제 사용자는이 제품을 파일로 저장하고 필요할 때 열 수 있으며 만든 버튼과 항목이 동일하기를 바랍니다.

나는 filedialog.asksaveasfilename(defaultextension=... )을 시도했지만 작동하지 않습니다. 내가 tkinter 파일에 대한 파일 형식을 찾고있다. 하지만 아마도 파이썬에 익숙하지 않기 때문에 대답을 찾는 정확한 경로를 보지 않을 것입니다. 누군가가 나를 도울 수 있다면 정말 감사 할 것입니다.

+0

* * Tkinter의 파일 *로 그런 일이 없습니다, Tkinter를 파이썬에 대한 라이브러리입니다. 따라서 * tkinter 파일 *은 .py 또는 .pyw 파일 (또는 패키지 된 실행 파일)입니다. 실제로 무엇을 성취하려고합니까, 최종 목표는 무엇입니까? –

+0

GUI는 사용자가 입력 한 정보에 따라 다른 프레임을 생성합니다. 이 새로운 GUI에는 특정 웹 페이지에서 브라우저를 열 수있는 특정 파일 및 단추에서 가져 오는 단추가 있습니다. 이 프로세스는 사용자 입력이 길기 때문에 내가 원하는 것은이 새 창 (GUI)을 저장하는 것이므로 사용자는 같은 GUI를 반복 작성하는 과정을 거칠 필요가 없습니다. – Mikaelo

+0

사용자가 프로그램을로드 할 때마다 사용자가 지난 번에 입력 한 정보로로드됩니까? –

답변

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()