Tkinter按钮未获得更新值

时间:2018-03-29 18:55:45

标签: python tkinter

我遇到了一个问题,我创建了一个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

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))