Python 使用For循环调用具有一系列参数的函数

Python 使用For循环调用具有一系列参数的函数,python,tkinter,Python,Tkinter,我想用这个代码: buttons[0]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(1)) buttons[0].grid(row=0,column=0,sticky='news',ipadx=10,ipady=10) buttons[1]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(2)) buttons[1].grid(row=0,co

我想用这个代码:

buttons[0]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(1))
buttons[0].grid(row=0,column=0,sticky='news',ipadx=10,ipady=10)

buttons[1]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(2))
buttons[1].grid(row=0,column=1,sticky='news',ipadx=10,ipady=10)

buttons[2]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(3))
buttons[2].grid(row=0,column=2,sticky='news',ipadx=10,ipady=10)

buttons[3]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(4))
buttons[3].grid(row=1,column=0,sticky='news',ipadx=10,ipady=10)
....
等等

并使用for循环将其缩短。 这就是我尝试的:

i=0
for j in range(0,3):
    for k in range(0,3):
        buttons[i]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(i))
        buttons[i].grid(row=j,column=k,sticky='news',ipadx=10,ipady=10)
        i+=1

所有参数都工作正常,但发送到本部分中函数的参数存在问题:
command=lambda:boardbutton单击(i)


谢谢。

根据您的第一个代码部分,您将从

buttons[0]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(1))
但在您的循环中,从i=0开始,然后:

buttons[i]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(i))
该行将如下所示:

buttons[0]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(0))
如果希望获得第一个代码部分结果,请尝试以下方法:

buttons[i]=Button(boardFrame,text=' ', command=lambda: boardButtonClick(i+1))

这有什么问题?你有错误吗?你有意料之外的价值吗?您得到的值是多少?command=lambda:BoardButton单击(i+1)还有一个步骤需要完成:
command=lambda i=i+1:BoardButton单击(i)
。阅读。@HenryYik这是我的问题!非常感谢。你可以把它作为答案贴出来。没问题。您可以将问题中链接的答案向上投票。我忘了说我关心
boardButtonClick()
函数本身中的
I=0
I=1
问题,所以这不是问题所在。问题是,
boardButtonClick(i)
根本没有向函数发送
i
@HenryYik通过添加
command=lambda i=i+1:boardButtonClick(i)