【问题标题】:How can I pass arguments to Tkinter button's callback command?如何将参数传递给 Tkinter 按钮的回调命令?
【发布时间】:2011-08-03 06:45:29
【问题描述】:

我有 2 个按钮,分别命名为“ButtonA”、“ButtonB”。 如果单击任何按钮,我希望程序打印“你好,ButtonA”和“你好,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?

【问题讨论】:

标签: python callback tkinter arguments


【解决方案1】:

这应该可行:

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

欲了解更多信息,请查看Tkinter Callbacks

【讨论】:

  • 我需要使用lambda: self.MyFunction(MyParam) 调用我的函数,不确定它是否值得编辑?
【解决方案2】:

text 在您的情况下不是一个函数。就这样吧:

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

你会得到它的工作。

【讨论】:

  • 这个答案没有显示如何像问题要求的那样打印“你好,”。
  • 好的,我没有完整阅读这个问题。您之前只需定义文本值并将其发送到 lamdba 回调。
猜你喜欢
  • 1970-01-01
  • 2011-10-18
  • 2015-02-28
  • 2023-03-23
  • 2016-02-20
  • 2013-06-14
  • 1970-01-01
相关资源
最近更新 更多