python - 如何定义一系列按钮并为每个按钮运行一个具有不同输入的函数 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 。此外,按钮被放入一个预先确定大小的数组中,然后打开和关闭引用。
解决方案
这是因为buycheck(x)
将始终使用x = 10
(for 循环后的值) 执行。您应该将 x 作为 lambda 的第一个参数的默认值传递,如下所示:
command=lambda n=x: buycheck(n)
推荐阅读
- python - Google Cloud Dataflow 是否支持有状态处理?错误:工作流程失败
- python - 如何将 .img(磁盘映像)转换为 .jpg?
- openedge - 添加某些方法时如何在现有 Progress PASOE 应用程序中部署更改
- swift - Existential Container 与符合协议的结构实例之间的关系
- python - 在 python 中使用 Teradatasql 模块将数据上传到 Teradata 时出错
- python-3.x - python方法:append在抽象类的子类中返回一个空列表
- heroku - heroku push 有 npm 问题
- powershell - 使用Powershell判断AD用户密码复杂度
- assembly - MASM中两位数的减法?
- php - 配置SMTP参数时,不发送邮件