Python:for循环中的lambdas

时间:2017-10-05 22:17:29

标签: python tkinter

我不确定我在下面的地方出了什么问题 - 我确定它是基本的东西,但我仍然不确定问题是什么。我试图让按钮在点击时改变汽车的行程,但它只会设置最后一个。

    def draw:
        car_column = 0
        for car in boarding_cars:
            tk.Label(transport_frame, text="{}".format(car.name)).grid(row=0, column=car_column)
            tk.Button(transport_frame, text=car.range, command= lambda: change_range(car)).grid(row=1, column=car_column)
            car_column += 1

    def change_range(car):
        print car.name
        if car.range == "mid":
           car.range = "close"
        elif car.range == "close:
           car.range = "mid"

我理解它只是将所有内容设置为列表中的最后一个,但我不确定如何阻止它这样做。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

当人们不了解dt = datetime.datetime(2017, 10, 5, 17, 7, 51) d = dt.date() t = dt.time() 具有后期约束力时,这是一个常见问题。您需要使用lambda代替此。

partial