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)