<初めに>
comboboxの初期値を簡単に設定することができたから
spinboxも出来ると思ったら…とんでもなくやり方が違ったので書いておきます
<やりたいこと>
Treeviewの列をダブルクリックしたときに
spinboxの初期値にTreeviewデータを入れたい
(理想↓)
①任意の列を指定したら…
②自動でspinboxの初期値が入力されるようにしたい…
<これがやりたい理由>
CSVからTreeview作成しているんだけど
中身を修正するときにspinboxが0から始まるのではなく、
指定した列の値が初期値として入っていたら修正したりする人がやり易いかな~
と思って…(;'∀')
別に0からでもいいんだけど!(笑)
<理想が現実になったコード>
# Treeview_1 ダブルクリック時のイベント
def Treeview_1_Double(event):
# 選択した行を取得
selected_item = Treeview_1.selection()[0]
# 値の取得
values_0 = Treeview_1.item(selected_item)['values'][0]
values_1 = Treeview_1.item(selected_item)['values'][1]
values_2 = Treeview_1.item(selected_item)['values'][2]
#テキストボックスの中身を削除
Treeview_1_textbox_0.delete(0, tk.END)
Treeview_1_textbox_1.delete(0, tk.END)
# テキストボックスに値を代入
Treeview_1_textbox_0.insert(tk.END,values_0)
Treeview_1_textbox_1.insert(tk.END,values_1)
intVar.set(values_2)
#表示するCSV設定
upno = 1
with open('csvパス', 'r', encoding = "utf_8") as f:
reader = csv.reader(f, delimiter=',', quotechar='"')
for cells in reader:
if upno != 1:#csvデータの1列目colを読み込まない為にif入れています
Treeview_1.insert("","end",values=(f"{cells[0]}",
f"{cells[1]}", f"{cells[2]}"))
upno = upno + 1
#イベント発生トリガー
#ダブルクリックした列のデータをEntryに入れるイベントが発生する
Treeview_1.bind("<Double-1>", Treeview_1_Double)
#Treeview選択した値を格納する欄
Treeview_1_textbox_0 = tk.Entry(frame_move, width=5, font=("MSゴシック","15"))
Treeview_1_textbox_1 = tk.Entry(frame_move, width=20,font=("MSゴシック","15"))
intVar = tk.IntVar(value=0)
Treeview_1_spinbox = tk.Spinbox(frame_move, from_=0, to=100,
increment=1,wrap=True, textvariable=intVar,
width=5, font=("MSゴシック", "15"))#time
これで、やっと理想が現実になりました(;^ω^)
コピペしたときに、変数とか違ってたらごめんなさい!!!!!!!
<ちな、コードが長いので簡単に書くと…>
#ダブルクリック イベント関数-------------------------------
def Treeview_1_Double(event):
# 選択した行を取得
selected_item = Treeview_1.selection()[0]
# 値を取得
values_2 = Treeview_1.item(selected_item)['values'][2]
# 取得した値を「intVar」にセットする
intVar.set(values_2)
#----------------------------------------------------------
#イベント発生トリガー
#ダブルクリックした列のデータをEntryに入れるイベントが発生する
Treeview_1.bind("<Double-1>", Treeview_1_Double)
#ダブルクリックする前は0に設定しておく(これが無いとエラー出るのでね…)
intVar = tk.IntVar(value=0)
Treeview_1_spinbox = tk.Spinbox(frame_move, from_=0, to=100,
increment=1,wrap=True, textvariable=intVar,
width=5, font=("MSゴシック", "15"))#time
#frame_move=表示するウィンドウ変数
#from_=spinboxの最小値
#to=spinboxの最大値
#increment=ボタン押したときの幅
#Wrap=最小値のときに↓ボタンを押すと最大値までスキップする(逆も行ける)
#textvariable=spinboxの初期値
#width=spinboxの横サイズ
#font=spinboxの文字フォント、文字の大きさ
spinboxの動きだけ書くとこんな感じです…。
この動作を詳しく知りたい人は「ウェジェット関数 tk.IntVar」と検索するべし…!
<最後に>
最近、やったことをQiitaに乗せるようにしてみたけど
記事を書くのに時間がかかる…次回は適当に書こうっと…(・_・;)