Añadir código a las opciones de los messagebox - Tkinter desde cero - Capítulo 11


En este capítulo veremos un poco sobre cómo hacer alguna acción con los cuadros de diálogo. Iremos viendo más cosas sobre esto más adelante.

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

Código

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.

Código

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.")

Resultado

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:

Código

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:

Código

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.")

Resultado

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.

Código

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.


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.