Python:将常量值传递给lambda?

时间:2015-06-24 07:43:05

标签: python python-2.7 lambda

我正在写tkinter GUI。我使用list来存储我的tkinter按钮实例。

像这样:

self.vec=[]
for i in range(25) :
    self.vec.append( Button(self.gframe) )
    self.vec[i]["width"] = 3
    self.vec[i]["command"] = lambda : self.placeChess(i)

我希望

button0的命令为lambda : self.placeChess(0)

button1的命令为lambda : self.placeChess(1)

button2的命令为lambda : self.placeChess(2)

......等等

但我上面写的代码并没有这样做。无论我点击什么按钮,placeChess的参数始终为25,而25是i的最终值。似乎python将i的引用传递给placeChess,而不是每次创建lambda时的常量值。

如何解决这个问题?

0 个答案:

没有答案