2016-06-11 7 views
0

ここに最初の投稿!私は現在、主にtkinterを使ってPythonを学んでいます。ユーザー入力を受け入れてcsvに保存するGUIを作成します。辞書に複数のユーザー入力を追加し、それらをcsvに書き込む、python tkinter

私はユーザー入力を取り込んで保存していますが、すべての入力を辞書に保存して辞書全体を呼び出すと、CSVに保存するのがより恩恵を受けると思います。 これまで私はこれを持っています、私はconscually csv oneにお互いの後に書いている方法が好きではありません。私はむしろ辞書全体を呼びたいと思う。

inputs = {'name':'self.input1.get()', 'age':, 'self.input2.get()'} 

のようなものは考えられませんでしたか?コードはありがとう!

from tkinter import * 
import csv 

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

    def output(self): 
     Label(text='Name:').grid(row=0, column=0, padx=5,pady=5) 
     self.input1 = Entry(root, width=10) 
     self.input1.grid(row=0, column=1,padx=5,pady=5) 

     Label(text='Age:').grid(row=1, column=0,padx=5,pady=5) 
     self.input2 = Entry(root, width=10) 
     self.input2.grid(row=1, column=1,padx=5,pady=5)  


     self.b = Button(root, text='Submit', command=self.writeToFile) 
     self.b.grid(row=4, column=4,padx=5,pady=5) 



    def writeToFile(self): 
     with open('WorkOrderLog.csv', 'w') as f: 
      w=csv.writer(f, quoting=csv.QUOTE_ALL) 
      w.writerow([self.input1.get()]) 
      w.writerow([self.input2.get()]) 

if __name__ == "__main__": 
    root=Tk() 
    root.title('Auto Logger') 
    root.geometry('1000x100') 
    app=App(master=root) 
    app.mainloop() 
    root.mainloop() 
+1

あなたは 'json'モジュールを調べるかもしれません - 辞書はJSONに変わることにうまく役立ち、すべての構造を保存するようになります。 –

答えて

0

送信プロセスと書き込みプロセスをそれぞれの機能に分ける必要があります。私は辞書を追加する配列を作成することをお勧めします。それは、ファイルにデータを書き込むための時間が来るときたとえば

self.data = [ 
    {'name': 'John', 'age':23}, 
    {'name': 'Sally', 'age':26}, 
] 

はその後、あなたはcsvファイルの各行を書くためにあなたのリストを反復処理することができます。

self.data = []のように最初は空の配列を作成してから、self.data.append({'name': self.input1.get(), 'age': self.input2.get()})のようなものを追加することができます。 csvに書き込む時間が来たら、それを反復することができます。

+0

私はこれらの辞書を呼び出すと、self.input1.get()のような意味で意味があると理解していますか?今まで私が見たのは、上の例のように辞書をプリセットしている人です。 –

+0

新しいデータを入力するときに、配列にどのように追加するかの例を追加しました。 – user2027202827

+0

ありがとう! AttributeError: 'list'オブジェクトに属性 'get'がありません –

関連する問題