我遇到了一个问题,我创建了一个for循环的按钮,我希望其他每个按钮都有不同的列,行和文本。 我注意到只有文本和列(因为我在其上使用了lambda)实际上是赋予函数的更新值。 (顺便说一下,行和列是用于别的东西,而不是按钮 - 在不同的功能中)。 这是我的代码,我似乎无法理解如何获取按钮的最新值,因为我的所有按钮都获取了第一个按钮的值,除了文本名称及其列
for order in self.orders:
if counter2 >= 2 and counter2 % 2 == 0:
x += 1
print x, counter2
bt = Button(window, command=lambda i=counter2: self.display_order(self.orders[order], window, x, i))
bt.configure(text='order ' + str(counter2+1), fg='black', bg='steel blue', width=20)
bt.grid(sticky='W', row=0, column=counter2, columnspan=1) # increase row number for every button
counter2 += 1
答案 0 :(得分:0)
x
也存在后期绑定问题。您已经为counter2
做了正确的事。使用以下更改(通过添加x=x
作为附加lambda参数):
bt = Button(window, command=lambda i=counter2, x=x: self.display_order(self.orders[order], window, x, i))