Dialogos y mensajes con Tkinter en Python

Cuadros de diálogos en Tkinter
Cuadros de diálogos en Tkinter

Una parte importante a la hora de trabajar con aplicaciones gráficas son los cuadros de dialogo y mensajes que puedan ir apareciendo al interactuar con nuestra aplicación.

Puedes ver la primera entrada que he realizado sobre aplicaciones gráficas con Tkinter.


Cajas de diálogo
El módulo tkMessageBox proporciona una interfaz de mensajes de diálogo.
Las cajas de diálogos se crean de la siguiente manera:

tkMessageBox.function(title, message, [, options])

Donde title es el título de la caja, message es el mensaje del cuerpo (se puede utilizar "n" para hacer saltos de línea) y options son las opciones que se pueden utilizar para cambiar la apariencia de la caja de diálogo.

Ejemplo de caja de diálogo en Tkinter:

Código:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# www.pythondiario.com

from Tkinter import *
from tkMessageBox import *

def pregunta():
    showerror("Pregunta", "Discuple, no hay preguntas disponibles")

def devolucion():
    if askyesno('Verificar', '¿Realmente quiere salir?'):
        showwarning('Si', 'No está implementado')
    else:
        showinfo('No', 'Salir fue cancelado')

Button(text='Salir', command=devolucion).pack(fill=X)
Button(text='Pregunta', command=pregunta).pack(fill=X)
mainloop()

Diálogos con Tkinter
Ejemplo de cuadro de diálogo

Análisis del código:

En las primeras líneas de código importamos los módulos: Tkinter y tkMessageBox.
Creamos una función pregunta() que va a interactuar con el primer botón (Salir). Esta función hará que se despliegue la caja showerror.
Luego creamos otra función llamada devolucion() que interactúa con el segundo botón (Pregunta). Esta función hará que se despliegue el cuadro de diálogo askyesno, si el usuario elige SI se desplegará el cuadro showwarning, si elige NO se despliega el cuadro showinfo.
Por último creamos los botones y el bucle mainloop().

Otras funciones del módulo tkMessageBox:

askokcancel(title=None, message=None, **options)
Pregunta si la operación debe continuar, retorna True si la opción es OK

askokcancel
askokcancel

askquestion(title=None, message=None, **options)
Realiza una pregunta

askquestion
askquestion

askretrycancel(title=None, message=None, **options)
Da la opción de reintentar la operación, devuelve True si la opción es Reintentar.

askretrycancel
askretrycancel

askyesno(title=None, message=None, **options)
Realiza una pregunta, devuelve True si la opción es SI

askyesno
askyesno

askyesnocancel(title=None, message=None, **options)
Realiza una pregunta, devuelve True si la opción es Si, devuelve None si la opción es Cancelar

askyesnocancel
askyesnocancel

showerror(title=None, message=None, **options)
Muestra un mensaje de error

showerror
showerror

showinfo(title=None, message=None, **options)
Muestra un mensaje de información

showinfo
showinfo

showwarning(title=None, message=None, **options)
Muestra un mensaje de precaución

showwarning
showwarning

Opciones del módulo tkMessageBox

default
¿Qué botón será la opción por defecto? Si esto no es especificado, el primer botón será la opción por defecto.

icon
Seleccione el icono que aparecerá en el cuadro de diálogo. Utilizar el argumento de la siguiente manera: icon=I, donde I es una constante definida en tkMessageBox (ERROR, INFO, QUESTION, WARNING)

parent
Si se deja por defecto esta opción, el cuadro de diálogo aparecerá por encima de la ventana principal. Para que aparezca por encima de una ventana secundaria W (nombre de la ventana), usamos el argumento parent=W.

Abrir o Guardar un archivo

Algo que se utiliza mucho cuando creamos aplicaciones gráficas es la opción de abrir o guardar un archivo. Esto lo podemos realizar con el módulo tkFileDialog.

tkFileDialog.askopenfilename([options])
Si el diálogo es cancelado por el usuario, la función devuelve None

tkFileDialog.asksaveasfilename([options])

Para ver las opciones que se pueden utilizar puedes entrar en el siguiente enlace: http://effbot.org/tkinterbook/tkinter-file-dialogs.htm

Código:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# www.pythondiario.com

from Tkinter import *
from tkFileDialog   import askopenfilename      

def llamada():
    nombre = askopenfilename() 
    print nombre
    
errmsg = 'Error!'
Button(text='Abrir archivo', command=llamada).pack(fill=X)
mainloop()

Ejemplo tkFileDialog
Ejemplo tkFileDialog

Espero estos ejemplos de diálogos y mensajes realizados con Python y Tkinter puedan ser de ayuda para tus aplicaciones gráficas. Cualquier duda o sugerencia dejar sus comentarios al final de la entrada. Gracias por visitar el blog 🙂 .

  1. Unknown dice:

    Muy buen post, Diego!

    1. PythonDiario dice:

      Gracias Alejandro, se que andas bastante interesado en el tema 🙂 . Ya van a venir nuevas entradas con más aplicaciones gráficas. Saludos y gracias por pasarte por el blog.

  2. David M dice:

    Justo lo que estaba necesitando! .... seguire atento los siguientes post!, Gracias!

  3. fbzz dice:

    Interesante! se agradece el aporte 🙂

    1. PythonDiario dice:

      Gracias a ti por visitar y participar en el blog. Saludos

  4. Unknown dice:

    BUEN DIA AMIGO ESTA MUY BIEN TU BLOG, EXELENTE EXPLICACION LAS IDEAS BASICAS SON LAS IMPROTANTES SALUDOS Y SUERTE

  5. Diego Ulises dice:

    Tengo Python la version 3 y me dice que no tengo la libreria tkMessageBox

    1. PythonDiario dice:

      Hola Diego, como importas el módulo? import tkinter?
      prueba con from tkinter import *

      Luego me cuentas, Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey