Skip to main content
 首页 » 编程设计

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

2025年05月04日33飞鱼

这是我的代码:

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() 

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