首页 > 后端开发 > Python教程 > 如何避免使用 For 循环创建 Tkinter 按钮时出现参数重复?

如何避免使用 For 循环创建 Tkinter 按钮时出现参数重复?

Linda Hamilton
发布: 2024-12-18 19:48:11
原创
588 人浏览过

How to Avoid Parameter Duplication in Tkinter Button Creation Using For Loops?

克服 Tkinter For 循环中的按钮参数重复

在 Tkinter 中,如果参数分配正确,通过 for 循环创建按钮可能会导致意外行为没有实施。考虑以下代码片段:

users = {"Test": "127.0.0.0", "Test2": "128.0.0.0"}
row = 1
for name in users:
    user_button = Tkinter.Button(self.root, text=name,
                                 command=lambda: self.a(name))
    user_button.grid(row=row, column=0)
    row += 1
登录后复制

预期结果是每个按钮从用户字典接收其自己的唯一参数。但是,按任意按钮只会打印字典中的最后一个值(例如“Test2”)。

出现此问题的原因是 lambda 表达式在整个循环中使用相同名称的变量。每次迭代都会覆盖先前的值,使 lambda 保留循环中最后分配的名称。

解决方案:Lambda 中的默认关键字参数

要解决此问题,您可以在 lambda 表达式中使用默认关键字参数。下面是更正后的代码:

for name in users:
    user_button = Tkinter.Button(self.root, text=name,
                             command=lambda name=name: self.a(name))
登录后复制

通过将 name 变量的当前值显式绑定到 lambda 的 name 关键字参数,lambda 为每个按钮保留正确的参数。现在,每次按下按钮都会触发所需的唯一参数输出。

此技术有效地确保每个按钮在 for 循环中保留其预期的参数分配。

以上是如何避免使用 For 循环创建 Tkinter 按钮时出现参数重复?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板