我有一个使用Tkinter的python程序,该程序动态创建除了位置/索引之外相同的按钮。这些按钮是通过循环创建的,并存储在列表中。因此,只能通过列表中的索引来识别按钮。
我稍后尝试遍历此列表,并为按钮分配一个函数,该函数唯一的参数是该按钮在列表中的索引位置。例如:
for i in range(len(button_list)):
button_list[i].config(command=lambda: start_time(button_list[i]))
由于在单击按钮时分配了参数,而不是将功能分配给按钮,因此单击任何按钮总是会激活最终按钮的功能,而不是其自身的功能。
将功能分配给按钮时,是否可以将参数分配给功能?
这里是带有按钮的窗口:Window with Buttons
这是我要执行的操作的硬编码示例:
button_list[0].config(command=lambda: start_time(0))
button_list[1].config(command=lambda: start_time(1))
button_list[2].config(command=lambda: start_time(2))
我也尝试过这个:
index_list = list(range(len(button_list)))
for x in index_list:
onclick = lambda index=x: start_time(x)
button_list[x].config(command=onclick)
任何帮助将不胜感激。谢谢
我不确定您要问的是什么,但不是100%知道,但是如果您没错,您想将按钮列表的索引分配给该索引按钮的配置文件中的start(time)
。
如果我理解正确,您可以使用enumerate()
解决问题:
for ind, button in enumerate(button_list):
button_list[ind].config(command= lambda: start_time(ind)