如何将文字从变量传递给Lambda函数

时间:2019-07-30 14:40:21

标签: python python-3.x tkinter

我有一个for循环,该循环遍历选项列表并创建tkinter按钮。然后,按钮具有从列表中选择选项的命令。当前,由于使用了变量i,每个按钮都选择了最后一个选项。

我知道问题出在lambda:self.pick_pet(pets [i])我相信在for循环完成之后,我正在被评估为最后一个值。

    pets = fnmatch.filter(os.listdir('.'), '*.jpg')
    buttons = {}
    for i in range(len(pets)):
        buttons[i] = Button(self.frame, text=pets[i], command=lambda: self.pick_pet(pets[i]))
        buttons[i].grid(row=i, column=1, pady=5)

我希望pets [i]在创建按钮时以某种方式采用i的文字值。

0 个答案:

没有答案