2016-04-07 8 views
1

送信ボタンを押した後、自分のエントリーウィジェットからテキストを取り込み、その情報をCSVファイルにコピーすることができます。投稿ボタンをクリックすると、Entryウィジェットがテキストボックス内のテキストを消去するのが難しいです。これと同様に、私は複数のエントリを各サブミットの後にお互いに表示しようとしていますが、コードは現在のテキストを消去し、最新のサブミットに置き換えます。Tkinter:Entryウィジェットをクリアして複数のノートをCSVファイルにコピーする方法

from Tkinter import * 
import csv 

resultsFile= open("Results_Button_List.csv", "w") 
namesWriter = csv.writer(resultsFile) 
header = ["Notes"] 
namesWriter.writerow(header) 

class App(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.pack() 
     self.output() 

    def output(self): 
     Label(text='Name:').pack(side=LEFT,padx=5,pady=5) 
     self.e = Entry(root, width=10) 
     self.e.pack(side=LEFT,padx=5,pady=5) 

     self.b = Button(root, text='Submit', command=self.writeToFile) 
     self.b.pack(side=RIGHT,padx=5,pady=5) 

    def writeToFile(self): 
     with open("Results_Button_List.csv", "w") as f: 
      w=csv.writer(f, quoting=csv.QUOTE_ALL) 
      w.writerow([self.e.get()]) 


if __name__ == "__main__": 
    root=Tk() 
    root.title('Notes Section') 
    root.geometry('1000x100') 
    app=App(master=root) 
app.mainloop() 
root.mainloop() 
+0

をどちらかあなたが書くためのファイルを開いたとき、それは現在を削除するので「」 '' resultsFile'にデータを書き込んだり、 '追加のためのファイルを開きますファイルの内容。 –

+0

'resultsList.close()'は、プログラムが終了したときにデータを混乱させる可能性があるので確かめてください。 –

+0

@Tadhg McDonald-Jensenありがとう!それは今働きます! – user1049876

答えて

2

Submitボタンが押された後、writeToFile(self)関数の最後にself.e.delete(0, END)を追加し、空のテキストボックスを設定するには:以下のコードです。

テキストをファイルに追加するには、ファイルのオープンモードを「a」(つまり、追加)に設定します。だから、次のように変更します。

with open("Results_Button_List.csv", "w") as f:

with open("Results_Button_List.csv", "a") as f: 
+0

ありがとうございました!それは前に働いていましたが、コードは情報を保存しません。私が追加しなければならないものはありますか? – user1049876

+0

関数の最後の後に 'self.e.delete(0、END)'を追加しなければなりません。書き込まれた後に – Kidus

+0

Nevermind、もう一度やり直してください。愚かなエラーがあった。ご協力いただきありがとうございます! – user1049876

関連する問題