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.
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":
Si pulsas el botón "no":
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.
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")
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.