
¿Cómo utilizar funciones con botones de Tkinter?
Capítulo 5: Llamar a funciones desde un botón
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.
Llamar a una función desde un botón de Tkinter
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.
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()

Y ahora, para llamar a la función desde un botón, lo hacemos con el atributo command
con el valor de la llamada.
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.
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:

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.
def click_boton():
Label(root,
text="¡No vuelvas a presionarlo!").grid(row=1, column=0)

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?
Comentarios
Si te quedan dudas sobre el temario, sobre Tkinter, 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.