2017-09-26 73 views
1

我不能识别的区别:的Tkinter命令发布在Python

b = tkinter.button(...,command=FuncName()) 

b = tkinter.button(...,command=FuncName) 

它似乎只能去掉括号,为什么呢?有人可以告诉我这个机制吗?

回答

5

当你写:“叫FUNCNAME()现在,它会返回一个函数时,按下按钮后称”

b = tkinter.button(...,command=FuncName()) 

这意味着,当你写:

b = tkinter.button(...,command=FuncName) 

它的意思是“稍后调用FuncName(),当按钮被按下。”

括号调用函数,没有它们,我们只是像其他任何数据类型一样传递函数。

0

此代码:

b = tkinter.button(...,command=FuncName()) 

...是完全一样的,因为这代码:

result = FuncName() 
b = tkinter.button(...,command=result) 

Tkinter的需要参考的功能。当您添加()时,您正在调用该函数,并给该函数的结果

如果FuncName()返回一个函数,第一个版本实际上可以正常工作。很少有人使用command属性)。