这是我的代码:
buttons=[]
for i in range(100):
buttons.append(Button(parent,text="0",command=lambda:[change(i)])
def change(i):
buttons[i]["text"]="1"
但最后,我将转到 99,无论我单击哪个按钮,我都只能更改最后一个按钮。所以我想知道有什么好的方法吗?
这是我的代码:
buttons=[]
for i in range(100):
buttons.append(Button(parent,text="0",command=lambda:[change(i)])
def change(i):
buttons[i]["text"]="1"
但最后,我将转到 99,无论我单击哪个按钮,我都只能更改最后一个按钮。所以我想知道有什么好的方法吗?
解决方案很简单只需通过以下命令更改命令
command = lambda i=i:change(i)
这将为您完成工作。您的解决方案没有按预期工作,因为 python 传递了 i 的最后一个值,因此要解决这个问题上面的命令是解决方案。这里 lambda 在每次执行循环时同时给出参数(即 i),然后将 i 传递给 change 函数,这就是它起作用的原因
有关更多 tkinter 相关信息,请务必访问:https ://mycodenotein.netlify.app/src/tkinter.html