
[code]

    import tkinter as tk
    import d_list
    
    tl = tk.Tk()
    tl.geometry('600x600')
    tl.title("登録モニター")
    #ボタンの設定
    def bot1_1():
        import csv
        detaset.append(txt1.get())
        detaset.append(txt2.get())
        detaset.append(txt3.get())
        detaset.append(txt4.get())
    
        with open('deta.csv', 'a') as csvFile:
    
            writer = csv.writer(csvFile)
            writer.writerow(detaset)
    
        csvFile.close()
    
    detaset = [] 
    
    #ラベル
    lab1 = tk.Label(text="商品登録", font=("",40))
    lab1.place(x=20, y=30)
    lab2 = tk.Label(text="ID", font=("",30))
    lab2.place(x=20, y=120)
    lab3 = tk.Label(text="品名", font=("",30))
    lab3.place(x=20, y=190)
    lab4 = tk.Label(text="数量", font=("",30))
    lab4.place(x=20, y=260)
    lab5 = tk.Label(text="登録者", font=("",30))
    lab5.place(x=20, y=330)
    
    #テキストボックス
    txt1 = tk.Entry(font=("",30), width=15)
    txt1.place(x=200, y=120)
    txt2 = tk.Entry(font=("",30), width=15)
    txt2.place(x=200, y=190)
    txt3 = tk.Entry(font=("",30), width=15)
    txt3.place(x=200, y=260)
    txt4 = tk.Entry(font=("",30), width=15)
    txt4.place(x=200, y=330)
    
    #ボタン
    bot1 = tk.Button(tl, text="登録", font=("",40), width=5, command=bot1_1)
    bot1.place(x=120, y=450)
    bot2 = tk.Button(tl, text="終了", font=("",40), width=5 )
    bot2.place(x=320, y=450)
    
    tl.mainloop()
    
[/code]


CC BY-SA 4.0
2020-05-09T03:20:42.980
66447
2020-05-09T05:42:51.883
2020-05-09T05:42:51.883
3060
40070
question
python python3 tkinter
tkinterのテキストボックスの値をcsvに書き込むする時にラベルも一緒に入る


質問がタイトルとソースコードのみで、しかもタイトルが途中で切れた感じなので以下のような質問ではないかと推測して回答します。

* * *

@Fumu 7 さんコメントのように、以下の内容であれば、質問のプログラムを動作させる前に既に`data.csv`にラベルが入っていたものと考えられます。

tkinterのテキストボックスの値をcsvに書き込むする時にラベルも一緒に入る **のは何故ですか？**

* * *

逆に以下のような質問であるかもしれません。

tkinterのテキストボックスの値をcsvに書き込むする時にラベルも一緒に **入れるにはどうすればよいですか？**

この場合、「登録」ボタンの処理で以下のようにcsvファイルを追記モード`'a'`で開いているので、ラベル(ヘッダ：項目名)を書くことはしない方が良いでしょう。

[code]

    with open('deta.csv', 'a') as csvFile:
    
[/code]

こういう簡単な処理では、プログラムで何かするのではなく、あらかじめ以下の内容を書き込んだ1行だけの`data.csv`ファイルを用意しておけば、良いと思われます。

[code]

    ID,品名,数量,登録者
    
[/code]

必要ならば`"`で囲んでおきます。

[code]

    "ID","品名","数量","登録者"
    
[/code]

例えば1件登録すると、こんな風になります。

[code]

    ID,品名,数量,登録者
    12345,牛乳500mlパック,5,店長
    
[/code]

* * *

ちなみにソースコード上では質問内容の他に以下のような問題があります。

  * `detaset = []`がグローバル変数として定義され、その最初でしかクリアされていないので、プログラムを終了せずに複数件数を登録すると、そのたびごとに行の後ろにデータが追加されていって異常なファイルになります。
  * 「登録」ボタン処理が走る毎に`import csv`されるのは無駄な処理です。
  * ファイルオープン時のデフォルトモードにより、(Windowsでは?) 1行書く毎に1行の空白行が書かれます。
  * `with`で`open`しているので、`csvFile.close()`は不要です。
  * `import`している`d_list`は独自モジュールのようですし、質問の中では何も使っていないようなので、質問記事には不要です。
  * 作成途中なのか転記ミスなのか、「終了」ボタンでのプログラム終了処理が無いですね。

ということで以下の対処を行えば良いでしょう

  * `import csv`は`def bot1_1():`から外に出して先頭部分に移動する
  * `detaset = []`はグローバルではなくローカル変数として`def bot1_1():`処理の先頭に移動する
  * (Windowsでは?) csvファイルのopenは改行が2重にならないように`with open('deta.csv', 'a', newline='') as csvFile:`とする
  * `csvFile.close()`は削除する(代わりに`return`を置く)
  * 「終了」ボタンでのプログラム終了処理を書く


CC BY-SA 4.0
2020-05-09T05:30:48.550
66450
2020-05-09T05:30:48.550
26370
66447
answer