Curso de TKINTER desde cero

Realizar acciones con los messagebox de Tkinter

Capítulo 11: Añadir eventos a las opciones de los messagebox

En este capítulo veremos un poco sobre cómo hacer alguna acción (eventos) con los cuadros de diálogo messagebox de Tkinter.

Tenemos el siguiente programa, que muestra una pregunta al usuario. Lo que vamos a hacer es añadir un if para que en caso de que pulse el botón "sí", que haga una cosa y si pulsa el botón "no" que haga otra cosa diferente.

Messagebox askquestion tkinter
from tkinter import *
from tkinter.messagebox import *

root = Tk()
root.title("Este es el título de la ventana principal")
root.iconbitmap("imagenes/icono.ico")

def muestra_ventana():
	respuesta = askquestion(title="Pregunta seria",
		message="¿Debería dejar de programar y salir a la calle?")

boton1 = Button(root, text="Enviar", command=muestra_ventana, width=75).pack()

mainloop()

Añadamos a este código un if else, escríbelo dentro de la función muestra_ventana.

def muestra_ventana():
	respuesta = askquestion(title="Pregunta seria",
			message="¿Debería dejar de programar y salir a la calle?")
	if respuesta == "no":
		showinfo(title="¡A seguir programando!",
			message="Estupendo, eligió la respuesta correcta.")
	else:
		askretrycancel(title="Botón equivocado",
			message="Haga click en 'Reintentar' para seguir programando.")
	

Si pulsas el botón "si":

Messagebox askquestion tkinter

Si pulsas el botón "no":

Messagebox askquestion tkinter

Si lo entiendes mejor poniendo una opción para el "si" y otra para el "no", puedes cambiar el else por otro if:

def muestra_ventana():
	respuesta = askquestion(title="Pregunta seria",
		message="¿Debería dejar de programar y salir a la calle?")
	if respuesta == "no":
		showinfo(title="¡A seguir programando!",
			message="Estupendo, eligió la respuesta correcta.")
	if respuesta == "yes":
		askretrycancel(title="Botón equivocado",
			message="Haga click en 'Reintentar' para seguir programando.")

Ahora le podemos ir añadiendo más cosas al programa, por ejemplo otro messagebox para para el askretrycancel de la respuesta "yes".

Le pondré otro if anidado y almaceno el askretrycancel en la variable respuesta_retry:

if respuesta == "yes":
		respuesta_retry = askretrycancel(title="Botón equivocado",
			message="Haga click en 'Reintentar' para seguir programando.")
	if respuesta_retry:
		showinfo(title="¡A seguir programando!",
			message="Estupendo, eligió la respuesta correcta.")

Al hacer click en el botón "Reintentar" aparece otra ventana.

Messagebox askquestion tkinter

Por si no sabes porqué este comportamiento, te explico que el botón "Reintentar" produce un True lo que hace que se cumpla la última condición que he escrito.
En el caso de darle a "Cancelar", devuelve False y la condición no se cumple. Podrías añadir otra condición para el False y cuantas más cosas se nos ocurran.

if respuesta == "yes":
		respuesta_retry = askretrycancel(title="Botón equivocado",
			message="Haga click en 'Reintentar' para seguir programando.")
	if respuesta_retry:
		showinfo(title="¡A seguir programando!",
			message="Estupendo, eligió la respuesta correcta.")
	else:
		showinfo(title="Adiós", message="¡Que tenga un buen paseo! T.T")

Messagebox askquestion tkinter

Hasta aquí este capítulo número 11. El siguiente se pone muy interesante, ya que vas a crear tu primer programa con todo lo que has aprendido hasta ahora. Se trata de una calculadora básica, que podrá sumar, restar, multiplicar y dividir, además de algunos extras como números decimales o un botón para borrar los números en la pantalla.

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.

Programación Fácil YouTube

Suscríbete

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.