Python-为什么在声明时执行Button参数“ command”?

发布于 2021-02-02 23:18:48

我是Python的新手,正在尝试使用tkinter编写程序。为什么执行下面的Hello函数?据我了解,仅在按下按钮时才会执行回调?我很困扰…

>>> def Hello():
        print("Hi there!")

>>> hi=Button(frame,text="Hello",command=Hello())
Hi there!
>>> 
关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    在为其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中,所以它不会立即执行,而是要等到单击按钮后才能执行。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看