python - Why is Button parameter "command" executed when declared? -


this question has answer here:

i'm new python , trying write program tkinter. why hello-function below executed? understand it, callback executed when button pressed? confused...

>>> def hello():         print("hi there!")  >>> hi=button(frame,text="hello",command=hello()) hi there! >>>  

it called while parameters button being assigned:

command=hello() 

if want pass function (not it's returned value) should instead:

command=hello 

in general function_name function object, function_name() whatever function returns. see if helps further:

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

if want pass arguments, can use lambda expression construct parameterless callable.

>>> hi=button(frame, text="hello", command=lambda: goodnight("moon")) 

simply put, because goodnight("moon") in lambda, won't execute right away, instead waiting until button clicked.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -