【发布时间】:2013-11-24 02:47:41
【问题描述】:
我在使用按钮小部件时遇到了一些问题。
这是我的代码。基本上,我想做的是当我按下第一个按钮时打印“0,0”,当我按下第二个按钮时打印“0,1”等等。但发生的情况是它总是打印“1,1”,这是我的 for 循环中的最后一个值。我该如何解决这个问题?
非常感谢您的帮助
from tkinter import *
def show(x,y):
print(x,y)
root = Tk()
a = 0
for i in range(2):
for j in range(2):
Button(root, text=a, command=lambda:show(i,j)).grid(column=j, row=i)
a += 1
root.mainloop()
【问题讨论】:
-
i, j是在单击按钮时查找的,而不是在定义lambda时查找,因为它们是闭包。 -
谢谢,我不知道。
标签: python lambda widget tkinter