Soy nuevo en Python e intento escribir un programa con tkinter. ¿Por qué se ejecuta la función Hello a continuación? Según tengo entendido, la devolución de llamada solo se ejecutará cuando se presione el botón? Estoy muy confundido ...¿Por qué se ejecuta el parámetro de botón "comando" cuando se declara?
>>> def Hello():
print("Hi there!")
>>> hi=Button(frame,text="Hello",command=Hello())
Hi there!
>>>
Gracias! El seguimiento obvio es; ¿cómo paso argumentos? Ahora estoy leyendo sobre Lambda, parece que podría ser la respuesta. – wjakobw
@wjakobw - ¿Pasa el argumento a la función o pasa la función como argumento? En el primer caso declaras argumentos en la definición de la función ex: 'def func (par1, par2):' en este último, simplemente usas el nombre de la función sin paréntesis, como lo delineé en mi respuesta. Ya que eres nuevo en python, ¿puedo sugerir [esta lectura] (http://www.diveintopython.net/)? Es fácil de seguir y muy divertido. – mac
Me gustaría pasar una variable como argumento cuando se presiona el botón. El comando usual = Hello (arg) no funcionará ya que la devolución de llamada contiene parantheses y usa el valor de retorno en lugar de la función. * En el ejemplo anterior Hello-function no toma argumentos, pero imagine otro caso. – wjakobw