PythonにてCSVで縦軸のを読込、リスト化し、要素をTkにラベリングしています。
ラベリングした隣にテキストボックスをリストの要素数に合わせて作成したいため、
テキストボックスをfor文で作成したいです。
現状のコードは下記です。
Python
1import tkinter as tk #tkinterをインポートしてtkと略して使用する。 2import csv 3 4#アクセスパス登録 5imput_sample = "C:\Users\11-11171008\Desktop\imput_sample.csv" 6output_sample = "C:\Users\11-11171008\Desktop\output_sample.csv" 7 8#ユーザフォーム構築 9root = tk.Tk() #画面を作る 10root.geometry("800x1000") #画面サイズ指定(ピクセル単位) 11root.title("管理ソフト") #ウインドのタイトルを設定 12 13#対象DPリストラインの表示 14 15#対象リストCSVの読込 16open_file = imput_sample #ファイルのパスを指定 17f = open(open_file,'r') #ファイルをオープン 18rows = csv.reader(f) #ファイルからデータを読み込み 19dp_list = [] #要素格納リストの作成 20 21for row in rows: # for文で行を1つずつ取り出す 22 dp = row[0] #リストのインデックス0を抽出 23 dp_list.append(dp)#抽出データをリストに格納 24 25f.close() #開いたファイルをクローズ(7) 26#print(dp_list) 27 28 29#DP配置位置の原点変数宣言 30DP_x = 20 31DP_y = 40 32box_no = 0 33 34 35#DP対象リストのラベリング 36for DP_name in dp_list: 37 38 #ラベル配置 39 dp_lbl = tk.Label(text=DP_name, font=("",12)) 40 dp_lbl.place(x=DP_x, y=DP_y) 41 42 43 #テキストボックス配置 44 qr_txt = "text_box" + str(box_no) 45 qr_txt = tk.Entry(width=100) 46 qr_txt.place(x=DP_x + 60, y=DP_y) 47 box_no = box_no + 1 48 49 50 #ボックス配置位置の調整 51 DP_y = DP_y + 23 52 53def kannryou_syori(): #テキストボックス情報の登録 54 qr_val =qr_txt.get() 55 print(qr_val) 56 57 58 59touroku_btn = tk.Button(text="登録",command=kannryou_syori) #ボタン作成 60touroku_btn.place(x=700, y=900) 61 62tk.mainloop() #作成ウインドの表示と維持 63 64
上記のコードでテキストボックスはfor文で生成できていますが、
生成後のコメントボックスをgetするとコメントボックスがfor文で最後に
生成されたものしか取得できません。
原因はqr_txtで毎回、forを回しているからかとは思っておりますが、
qr_txt + 変数 のようにしてforで回す例えば、
qr_txt_1、qr_txt_2、qr_txt_3・・・と宣言できれば解決するかと
思うのですが処理方法が調べてもわかりませんでした。
誠に申し訳ありませんがご教授頂けると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/21 11:54