您的匿名
lambda函数可以是闭包(如@abernert所指出的,在Python的情况下,它们 实际上并不是
闭包)-它们“封闭”了变量
i,以供以后引用。但是,它们不是在定义时查找值,而是 在调用 时查找值,这是整个循环结束 后
的某个时间
while(此时
i等于10)。
要解决此问题,您需要将的值重新绑定
i到其他东西以供lambda使用。您可以通过多种方式执行此操作-这是一种:
...i = 1while i < 10: # Give a parameter to the lambda, defaulting to i (function default # arguments are bound at time of declaration) newButton = Button(F, text="Show Number", command=lambda num=i: showNumber(num)) ...



