首页 > 解决方案 > 如何定义一系列按钮并为每个按钮运行一个具有不同输入的函数 tkinter python

问题描述

所以我使用一个for循环来定义一系列按钮:

buy = [None] * 11
for x in range(11):
    buy[x] = Button(buyf, text = ProjectList[x][2],command= lambda: buycheck(x), bg = "red", fg = "white")

为什么当我按下任何按钮时它们只返回最大值(11)?我希望每个按钮在分配所述按钮时通过输入 x 值来调用函数buycheck 。此外,按钮被放入一个预先确定大小的数组中,然后打开和关闭引用。

标签: pythonfor-loopbuttontkinter

解决方案


这是因为buycheck(x)将始终使用x = 10(for 循环后的值) 执行。您应该将 x 作为 lambda 的第一个参数的默认值传递,如下所示:

command=lambda n=x: buycheck(n)

推荐阅读