2016-03-31 18 views
0

データリストに新しい入力を保存するにはどうすればよいですか?Python:データリストに追加入力を保存する方法は?

現在、入力ボックスにテキストを入力すると、リストに表示されます。データです。ただし、入力ボックスをクリアして新しい値を追加すると、以前に入力された値が消えているように見える間に、この値がデータリストに追加されます。私はそれぞれの付加価値をリストに残しておきたい。私はPythonに新しいと一般的にコーディングしています。すべての助けが大変ありがとう!

import Tkinter as tk 

class Example(tk.Frame): 
    def __init__(self, parent): 
     tk.Frame.__init__(self, parent) 

     # create a prompt, an input box, an output label, 
     # and a button to do the saving 
     self.prompt = tk.Label(self, text="Enter your Filepath:", anchor="w") 
     self.entry = tk.Entry(self) 
     self.submit = tk.Button(self, text="Save", command = self.save) 
     self.output = tk.Label(self, text="") 
     self.clear_button = tk.Button(self, text="Clear text", command=self.clear_text) 

     # lay the widgets out on the screen. 
     self.prompt.pack(side="top", fill="x") 
     self.entry.pack(side="top", fill="x", padx=20) 
     self.output.pack(side="top", fill="x", expand=True) 
     self.submit.pack(side="bottom") 
     self.clear_button.pack(side="bottom") 


    def clear_text(self): 
     self.entry.delete(0, 'end') 

    def save(self): 
     # get the value from the input widget, save 
     # it to list data 
     data = [] 

     try: 
      a = self.entry.get() 
      result = data.append(a) 

     except ValueError: 
      result = "Please enter filepaths only" 

     # set the output widget to have our result 
     self.output.configure(text=result) 
     print (data) 

if __name__ == "__main__": 
    root = tk.Tk() 
    Example(root).pack(fill="both", expand=True) 
    root.mainloop() 
+1

'data'がローカル変数であり、それは空の一覧にあなたが送信ボタンを押すたびに再割り当てされている(以下のコードは、表示されます)。したがって、あなたの価値が「消えていく」理由には2つの理由があります。 1: 'data'はローカル変数ですので、' save'関数を終了するとワイプされます。 2: 'save'を呼び出すと、' data = [] 'で手動で上書きします。 – Dzhao

+0

素早く応答いただきありがとうございます!私は保存機能の外にデータを移動しましたが、プログラムはまだリストを作成しません。この問題をどのように解決すればよいですか? – mattyb

+0

あなたの改訂コードで質問を更新してください。 – Dzhao

答えて

0

ソリューション...

import Tkinter as tk 
data = [] 
class Example(tk.Frame): 


def __init__(self, parent): 
    tk.Frame.__init__(self, parent) 

    # create a prompt, an input box, an output label, 
    # and a button to do the computation 
    self.prompt = tk.Label(self, text="Enter your Filepath:", anchor="w") 
    self.entry = tk.Entry(self) 
    self.submit = tk.Button(self, text="Save", command = self.save) 
    self.output = tk.Label(self, text="") 
    self.clear_button = tk.Button(self, text="Clear text", command=self.clear_text) 

    # lay the widgets out on the screen. 
    self.prompt.pack(side="top", fill="x") 
    self.entry.pack(side="top", fill="x", padx=20) 
    self.output.pack(side="top", fill="x", expand=True) 
    self.submit.pack(side="bottom") 
    self.clear_button.pack(side="bottom") 


def clear_text(self): 
    self.entry.delete(0, 'end') 


def save(self): 
    # get the value from the input widget, convert 
    # it to an int, and do a calculation 

    try: 
     a = self.entry.get() 
     result = data.append(self.entry.get()) 

    except ValueError: 
     result = "Please enter filepaths only" 


    # set the output widget to have our result 
    self.output.configure(text=result) 
    print (data) 


if __name__ == "__main__": 
    root = tk.Tk() 
    Example(root).pack(fill="both", expand=True) 
    root.mainloop() 
関連する問題