目標:GUI上でユーザーにデータを入力してもらったら、[登録]ボタンでtreeviewにそのデータを1行ずつ追加&表示。
そして、最後に[保存]ボタンでtreeviewに溜まったデータを最後にcsvに出力したいです。
現状:treeviewから直接csvへの出力するやり方を見つけられなかったため、一行ずつpandasでデータフレームに書き込み、最後にそのデータフレームをCSVとして保存しようと考えました。
ただ、現在実行するとこのようなエラーが出てしまいます。初心者すぎる質問で大変心苦しいですが、目標を達成できるように助言いただけないでしょうか。
宜しくお願い致します。
NameError: name 'hinmei' is not defined
python
1#ライブラリインポート 2import tkinter as tk 3import tkinter.messagebox as tkm 4from tkinter.scrolledtext import ScrolledText 5import tkinter.ttk as ttk 6import cx_Oracle 7import os 8import csv 9import pandas as pd 10import textwrap 11 12#情報 13desktop_path = os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH") + "\Desktop"+"\" 14names = ["配布先","品番表示","枝番表示","商品名1","商品名2","税率","税込小売価格","本体小売価格","税込卸価格","本体卸価格","入数表示","出力枚数","入力者番号"] 15df = pd.DataFrame(columns=names) 16 17def btn_click1(): 18 df.to_csv("_{}.csv", index= False,encoding="shift-jis") 19 tkm.showinfo("情報", "CSVを保存しました") 20 21def btn_click(): 22 23 haihin = str(txt1.get()) 24 hinmei = "\n".join(textwrap.wrap(txt4.get('1.0', 'end -1c'), width=23)) 25 code= str(txt2.get()) 26 mai= str(txt5.get()) 27 tree.insert("", "end", values=(code,hinmei,mai,1,1,1,1,1,1)) 28df= df.append(["haihin","code","","hinmei","商品名2","税率","税込小売価格","本体小売価格","税込卸価格","本体卸価格","入数表示","mai","入力者番号"]) 29print(df) 30#画面表示 31root = tk.Tk() 32root.geometry('1300x800+250+100') 33root.title('入力画面') 34root.minsize(width=1300, height=800) 35 36#配布先FLBX 37lbl1 = tk.Label(text='配布先FLBX',relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 38lbl1.place(x=10, y=18) 39txt1 = tk.Entry(width=10) 40txt1.place(x=105, y=20) 41 42#商品コード 43lbl2 = tk.Label(text='商品コード',relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 44lbl2.place(x=10, y=50) 45txt2 = tk.Entry(width=30) 46txt2.place(x=105, y=52) 47lbl2_1 = tk.Label(text='10桁入力(品番/CL/SZ)',font=(u'MS ゴシック', 9, 'bold')) 48lbl2_1.place(x=290, y=55) 49 50#登録内容 51lbl3 = tk.Label(text='登録内容',font=(u'MS ゴシック', 11, 'bold')) 52lbl3.place(x=15, y=92) 53 54#商品名 55lbl4 = tk.Label(text='商品名',relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 56lbl4.place(x=105, y=92) 57txt4 = tk.Text(root, font=(u'MS ゴシック', 11, 'bold'),width=23,height=2)#字数制限、要確認!! 58txt4.place(x=165, y=94) 59#txt4.configure(state='disabled') 60 61#出力枚数 62lbl5 = tk.Label(text='出力枚数',relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 63lbl5.place(x=380, y=90) 64txt5 = tk.Entry(width=20) 65txt5.place(x=380, y=110) 66txt5.insert(tk.END,1) 67 68#商品情報 69lbl6 = tk.Label(text='小売価格 '+ " 0,000",relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 70lbl6.place(x=540, y=90) 71 72lbl7 = tk.Label(text='本体価格 '+ " 0,000",relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 73lbl7.place(x=540, y=110) 74 75lbl8 = tk.Label(text='卸価格 '+ " 0,000",relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 76lbl8.place(x=774, y=90) 77 78lbl9 = tk.Label(text='卸本体価格 '+ " 0,000",relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 79lbl9.place(x=740, y=110) 80 81lbl10 = tk.Label(text='消費税率 '+ " 10%",relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 82lbl10.place(x=954, y=90) 83 84lbl11 = tk.Label(text='入数表示 '+ " (@×,××)",relief="ridge",font=(u'MS ゴシック', 11, 'bold')) 85lbl11.place(x=954, y=110) 86 87#登録ボタン 88btn = tk.Button(root, text='登録',width=8, font=("Menlo",11), bg="yellow2",command=btn_click) 89btn.place(x=1170, y=105) 90 91#保存ボタン 92btn1 = tk.Button(root, text='保存',width=8, font=("Menlo",11), bg="yellow2",command=btn_click1) 93btn1.place(x=1170, y=440) 94 95#商品コード 96lbl12 = tk.Label(text='商品コード',font=(u'MS ゴシック', 11, 'bold')) 97lbl12.place(x=10, y=160) 98 99 100#treeview 101frame = tk.Frame() 102frame.place(x=50,y=190) 103 104tree = ttk.Treeview(frame) 105tree.grid(row=0, column=0) 106tree["columns"] = (1,2,3,4,5,6,7,8,9) 107tree["show"] = "headings" 108 109tree.column(1,width=180) 110tree.column(2,width=200) 111tree.column(3,width=60) 112tree.column(4,width=140) 113tree.column(5,width=140) 114tree.column(6,width=140) 115tree.column(7,width=140) 116tree.column(8,width=60) 117tree.column(9,width=140) 118 119tree.heading(1,text="商品コード") 120tree.heading(2,text="商品名") 121tree.heading(3,text="出力枚数") 122tree.heading(4,text="小売価格") 123tree.heading(5,text="本体価格") 124tree.heading(6,text="卸価格") 125tree.heading(7,text="卸本体価格") 126tree.heading(8,text="消費税率") 127tree.heading(9,text="入数表示") 128 129 130ysb = tk.Scrollbar(frame, orient=tk.VERTICAL, width=16, command=tree.yview) 131tree.configure(yscrollcommand=ysb.set) 132ysb.grid(row=0, column=1, sticky='news') 133 134#表示保持 135root.mainloop()
回答1件
あなたの回答
tips
プレビュー