Ответ 1
Он вызывается, когда назначаются параметры для Button
:
command=Hello()
Если вы хотите передать функцию (не возвращаемое значение), вы должны:
command=Hello
вообще function_name
- это объект функции, function_name()
- это то, что возвращает функция. Посмотрите, поможет ли это:
>>> def func():
... return 'hello'
...
>>> type(func)
<type 'function'>
>>> type(func())
<type 'str'>
Если вы хотите передать аргументы, вы можете использовать лямбда-выражение для создания бесконтактного вызова.
>>> hi=Button(frame, text="Hello", command=lambda: Goodnight("Moon"))
Проще говоря, поскольку Goodnight("Moon")
находится в лямбда, он не будет выполняться сразу, вместо этого будет ждать нажатия кнопки.