当前位置: 首页 > 面试题库 >

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

汪驰
2023-03-14
问题内容

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

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

>>> hi=Button(frame,text="Hello",command=Hello())
Hi there!
>>> 

问题答案:

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



 类似资料:
  • 问题内容: 代码是: 该按钮不起作用,它在没有我的命令的情况下打印了“hey”和“ het”一次,然后,当我按下按钮时,什么也没发生。 问题答案: 考虑以下代码: 它的功能与此完全相同: 该选项引用了一个函数,这是你需要向其传递函数名称的一种奇特的方式。要传递引用,你必须仅使用名称,而不使用括号或参数。例如: 如果要传递诸如“her”之类的参数,则必须使用一些额外的代码: 你可以创建一个无需你的参

  • 问题内容: 目前,我正在研究Sams出版的《 24小时自学Android应用程序开发》一书。我是Java,Android或其他方面的新手。我在ActionScript 3中具有非常扎实的背景,该语言与Java具有足够的相似性,因此该语言本身并不难掌握,但对于本书中某些代码示例的基本原理,我仍然存在一些疑问。例如,以下是第9小时的示例代码随附的函数: 在此函数签名中,作者已将scoreTable参数

  • 它适用于我声明的结构xy。为什么相同的模式不适用于复杂的 错误消息: 我最好的猜测是这与

  • 问题内容: 在我看到的所有支持可选参数的编程语言中,都有一个模仿,即可选参数必须出现在声明的末尾。可选项目后不得包含必需的参数。是什么原因呢?我想这可能是编译器/解释器的要求。 问题答案: 好吧,如果它们在最前面,您将如何检测何时停止供应它们?唯一的方法是 在 可选参数 之后 变量类型是否不同。有点不可思议的要求,因此您只需将它们强制设置为最后是有意义的(省去了用于检测“最终”可选参数的复杂规则的

  • 我遇到了这段代码,不知道为什么X在这里工作。

  • 问题内容: 我仍在学习python,我对此表示怀疑: 在python 2.6.x中,我通常像这样在文件头中声明编码(如在PEP 0263中 ) 之后,我的字符串照常编写: 但是每次我看到python项目代码时,都不会在标头中声明编码。而是在每个这样的字符串处声明它: 有什么不同?目的是什么?我知道Python 2.6.x默认情况下会设置ASCII编码,但是它可以被标头声明覆盖,那么每个字符串声明有