Llamar a funciones desde un botón - Tkinter desde cero - Capítulo 5


En este capítulo, vamos a empezar a ver cómo interactuar con nuestro programa.
Para esto, lo primero que se me ocurre es crear una función que cuando hagas click en un botón, este muestre un texto.

Creamos la función.
Por cierto, hay casos como el widget label que puedes ahorrarte alguna línea de código añadiendo el grid en la misma línea como escribo en el código de abajo.

Código

from tkinter import *
root = Tk()

def click_boton():
   Label(root, text="¡No vuelvas a presionarlo!").grid()

boton1 = Button(root, text="No presiones el botón rojo", bg="red", padx=100, pady=25).grid(row=1, column=2)

root.mainloop()

Resultado

Botón Tkinter

Y ahora para llamar a la función desde un botón, lo hacemos con el atributo command con el valor de la llamada (está resaltado en negrita en el código de abajo).

Código

boton1 = Button(root, text="No presiones el botón rojo", bg="red", padx=100, pady=25).grid(row=1, column=2, command=click_boton())

Si en esta llamada añades los paréntesis como en el código de arriba, se ejecuta la función directamente.
En este caso no queremos que se llame a la función hasta que hagamos click en el botón. Por lo tanto, borra los paréntesis.

Código

boton1 = Button(root, text="No presiones el botón rojo", bg="red", padx=100, pady=25).grid(row=1, column=2,command=click_boton)

Esta vez, en el momento que hagas click, aparecerá el widget Label() con el texto y se cargará tantas veces cómo pulsaciones realices en el botón.
En la siguiente imagen, he presionado cinco veces el botón:

Botón llamando a función en Tkinter

Bien, ¿y si lo que quieres es que solo se pueda ejecutar la función una sola vez por mucho que presiones el botón?

Es muy fácil, añade al Label() una posición en el grid(), de esa forma evitas que aparezca en lugares no deseados o repetidamente.

Código

def click_boton():
   Label(root, text="¡No vuelvas a presionarlo!").grid(row=1, column=0)
Botón llamando a función en Tkinter

Si tienes ganas de practicar, te dejo un ejercicio.
¿Cómo harías para que se mostrase el texto a la izquierda?, ¿y a la derecha?


Suscríbete a mi canal de YouTube para apoyarme

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.