在 tkinter 按钮创建循环中传递命令参数
在 Tkinter 中,当在 for 循环中创建一系列按钮时,用户经常面临将不同的命令参数传递给每个按钮的问题。目标是通过在函数调用期间提取计数值 (i) 来识别按下了哪个按钮。
但是,在实现这种方法时,开发人员遇到了一个特殊的问题:无论创建的按钮数量有多少,打印出来的按钮都会被按下。值保持不变,对应于循环的最终迭代。这表明,虽然按钮是独立创建的,但其命令参数中的 i 值似乎是共享的。
解决问题
要克服此困难并分配纠正每个按钮的 i 值,需要修改命令中使用的 lambda 函数:
command=lambda: self.open_this(i)
在原始 lambda 中,i 变量是在函数定义时捕获的,并且由于它是在循环外部分配的,因此在调用函数时它已被替换为最后一个循环值。
修改后的 lambda 通过引入附加参数 i=i,它在函数定义时将当前 i 值分配给新变量。因此,每个按钮创建都会保留相应的 i 值,确保正确操作。
以上是如何将唯一参数传递给循环中创建的 Tkinter 按钮?的详细内容。更多信息请关注PHP中文网其他相关文章!