gpt4 book ai didi

Python Tk 多个按钮创建问题

转载 作者:行者123 更新时间:2023-12-01 06:08:17 25 4
gpt4 key购买 nike

我正在创建 10 个按钮,按钮文本标记为 1 到 10。以下代码正确创建 10 个按钮和标签。但它打印 9 作为所有按钮的输出。我期望它做的是将按钮的相应编号打印到屏幕上,例如,如果用户按下按钮 2,那么它应该打印 2。

def create():
for i in range (1,10):
lst.insert(i,Button(text=i,command=lambda: prnt(i)).pack())

(注意:“prnt(i)”是一个简单打印 i 的值的函数。 'lst' 是存储创建的按钮的列表。)

从输出中我可以说,当用户按下按钮时,程序使用最新的 i 值作为函数的参数,那么我如何解决这个问题,而不必为每个按钮编写 10 行代码。

最佳答案

试试这个(注意 lambda 的命名参数):

def create():
for i in range (1,10):
    lst.insert(i,Button(text=i,command=lambda i=i : prnt(i)).pack())

这会将 i 的作为局部变量传递给 lambda。如果没有这个,您将使用对原始变量的引用,当然,该引用始终会解析为原始变量中存储的任何内容。

关于Python Tk 多个按钮创建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7040172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com