楼主:
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不能包在循环里?
因为看起来不像是制作选项时的时间问题,用一个一个输入的方式是完全正常的
是我写错, 或是有什么方法可以处理多笔目录选项的状况呢?