您如何动态分配具有相同功能但参数不同的按钮列表?

问题描述 投票:0回答:1

我有一个使用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)

任何帮助将不胜感激。谢谢

python button tkinter dynamic command
1个回答
0
投票

我不确定您要问的是什么,但不是100%知道,但是如果您没错,您想将按钮列表的索引分配给该索引按钮的配置文件中的start(time)

如果我理解正确,您可以使用enumerate()解决问题:

for ind, button in enumerate(button_list):
    button_list[ind].config(command= lambda: start_time(ind)
© www.soinside.com 2019 - 2024. All rights reserved.