如何将参数传递给Tkinter按钮的回调命令?

15 投票
2 回答
39304 浏览
提问于 2025-04-16 22:46

我有两个按钮,分别叫做“ButtonA”和“ButtonB”。

我希望程序在点击任意一个按钮时,能打印出“hello, ButtonA”和“hello, ButtonB”。

我的代码如下:

def sayHi(name):
    print 'hello,', name

root = Tk()
btna = Button(root, text = 'ButtonA', command = lambda: text)
btna.pack()

但是当我点击ButtonA时,出现了一个错误,提示text not defined

我明白这个错误的意思,但我该怎么把ButtonA的文本传给lambda呢?

2 个回答

3

在你的情况中,text 不是一个函数。你只需要这样写:

value = 'ButtonA'
btna = Button(root, text = value, command = lambda: sayHi(value))

这样就能正常工作了。

29

这个应该可以正常运行:

...
btnaText='ButtonA'
btna = Button(root, text = btnaText, command = lambda: sayHi(btnaText))
btna.pack()

想了解更多信息,可以看看 Tkinter 回调函数

撰写回答