在这行上:
Button(operator, text=btn_text, width=5, command=lambda: click(btn_text)).grid(row=r,column=c)
btn_textlambda中的值不会被其当前值冻结。取而代之的是,当
btn_text在循环的下一次迭代中更改时,它在lambda中求值的值也将更改。这意味着您的所有Button都有效地具有一个
click('C')命令,因为
'C'是的最终值
btn_text。
你可以做:
command=lambda text=btn_text: click(text)
要么
command=(lambda text: lambda: click(text))(btn_text)
text将捕获的当前值
btn_text,此后不会更改。您的命令将使用适当的参数调用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)