作者:
MaJaeYun (Bonjwa)
2021-12-08 13:08:07想要做的功能是在tkinter上面, 使用menu選單做切換
呼叫update_output後, 把一個StringVar字串更改內容
問題發生在寫entryconfigure時, 迴圈工作跟預期的不一樣
輸出給更新字串的func時,只會出現最後一個
temp_var = tk.StringVar()
test_list = ['Test1','Test2','Test3']
for i in range(0,len(test_list)):
#顯示選單正常顯示沒問題
tkmenu.add_command(label = test_list[i])
#綁定功能時永遠都是輸出最後一個'Test3'
tkmenu.entryconfigure(i, command = lambda: update_output(test_list[i]))
def update_output(self, str_var):
print("input var:" + str_var)
temp_var.set(str_var)
print("output var:" + temp_var.get())
return template_var
比對input var跟output var之後
確定輸入的時候就是'Test 3', 不管按哪一個選項都一樣
但不知道為什麼,如果如下列所示不用迴圈,直接手動輸入,完全可以正常運作
點到對的目錄選項,就會吐回來對應的字串
tkmenu.entryconfigure(0, command = lambda: update_output('Test1'))
tkmenu.entryconfigure(1, command = lambda: update_output('Test2'))
tkmenu.entryconfigure(2, command = lambda: update_output('Test3'))
只能猜測是entryconfigure不能包在迴圈裡?
因為看起來不像是製作選項時的時間問題,用一個一個輸入的方式是完全正常的
是我寫錯, 或是有甚麼方法可以處理多筆目錄選項的狀況呢?