仅为回调函数传递了最后一个变量

Pen*_*nt- 1 python tkinter

我试图为Tkinter中的按钮数组生成带有变量参数的回调函数,但问题是只为所有回调函数传递了最后一项.例如,我有类似的东西:

a = [0, 1, 2]
btn = []
for i in range(0,3):
    btn.append(Button(frame, text='something', command=lambda: funct(a[i])))
Run Code Online (Sandbox Code Playgroud)

对于在BTN列表中的每个按钮,在最后一个项目a列表2,被传递给函数funct().但是,我想要的是a[0]传递给funct()第一个按钮,a[1]第二个按钮,依此类推.我该如何解决这个问题呢?

Ign*_*ams 5

你做错了.

for i in range(0,3):
    btn.append(Button(frame, text='something',
      command=lambda a=a, i=i: funct(a[i])))
Run Code Online (Sandbox Code Playgroud)