gpt4 book ai didi

python - 打印点击按钮的文本 tkinter

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:52 25 4
gpt4 key购买 nike

这是我的代码:

from tkinter import *    

def command(d):
print(d)

a = Tk()
b = []

for c in range(0, 5):
b.append(Button(a, text=c, command=lambda: command(c)))
b[c].pack()

a.mainloop()

运行脚本时,按钮都打印 4,而我希望它们打印上面显示的数字。你怎么能这样做?

我正在使用 Python 3.4

最佳答案

乍一看,这里有几处错误。首先,您的 for 循环需要像这样缩进四个空格:

for c in range(0, 5):
b.append(Button(a, text=c, command=lambda: command(c))
b[c].pack()

如果您不这样做,那么对于脚本的其余部分,c 的值将为 4,因为这是最后一次迭代的 c 的值的 range(0, 5)

您的按钮总是打印 4 的原因是因为变量 c 是在调用回调时计算的,而不是在您将回调分配给按钮时计算的。避免此问题的一种简单方法是使用伪变量(我们将其称为 j)使用 c 的当前值初始化 lambda 函数,如下所示:lambda j=c: 命令(j)。把它们放在一起,你应该有这样的东西:

from tkinter import *    

def command(d):
print(d)

a = Tk()
b = []

for c in range(0, 5):
x = Button(a, text=c, command=lambda j=c: command(j))
x.pack()
b.append(x)

a.mainloop()

我改变了你打包按钮的方式,因为我认为它更具可读性,但最终结果应该是一样的。

关于python - 打印点击按钮的文本 tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34362076/

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