为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在声明时执行Button参数“命令”?

为什么在声明时执行Button参数“命令”?

忽然笑 2019-06-29 10:49:05
为什么在声明时执行Button参数“命令”?我是Python新手,想用tkinter编写一个程序。为什么执行下面的Hello函数?据我所知,只有在按下按钮时才会执行回调?我很困惑.。>>> def Hello():         print("Hi there!")>>> hi=Button(frame,text="Hello",command=Hello())Hi there!>>>
查看完整描述

2 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

的参数时调用它。Button正在分配:

command=Hello()

如果您想传递函数(而不是它的返回值),则应该改为:

command=Hello

总体而言function_name是一个函数对象,function_name()不管函数返回什么。看看这是否有进一步的帮助:

>>> def func():...     return 'hello'... >>> type(func)<type 'function'>>>> type(func())<type 'str'>

如果要传递参数,可以使用Lambda表达若要构造无参数可调用性,请执行以下操作。

>>> hi=Button(frame, text="Hello", command=lambda: Goodnight("Moon"))

简单地说,因为Goodnight("Moon")在lambda中,它不会立即执行,而是等待按钮被单击。


查看完整回答
反对 回复 2019-06-29
  • 2 回答
  • 0 关注
  • 579 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信