57 - Interfaz gráfica de usuario : tkinter

La interfaz gráfica de usuario, conocida también como GUI (graphical user interface) son fundamentales cuando queremos implementar programas para usuarios finales que faciliten la entrada y salida de datos.

Vimos en el concepto anterior que Python puede hacer uso de la GUI wxPython mediante la instalación del paquete respectivo. Python por defecto instala el módulo 'tkinter' para la implementación de interfaces visuales. El editor IDLE que viene con Python está desarrollado utilizando este módulo.

Veremos en una serie de conceptos como implementar interfaces visuales con ventanas, botones, checkbox, label etc. haciendo uso del módulo 'tkinter'.

Lo primero que hay que tener en cuenta es que el módulo 'tkinter' (tk interface) viene instalado por defecto con Python.

Problema:

Mostrar una ventana y que en su título aparezca el mensaje 'Hola Mundo'.

El programa en Python haciendo uso del módulo 'tkinter' requiere el siguiente algoritmo:

Programa: ejercicio215.py

Ver video

import tkinter as tk

ventana1=tk.Tk()
ventana1.title("Hola Mundo")
ventana1.mainloop()

Lo primero que hacemos es importar el módulo tkinter y le definimos un alias luego de la palabra clave as. Es más fácil luego escribir 'tk' en lugar de 'tkinter':

import tkinter as tk

La librería tkinter está codificada con la metodología de programación orientada a objetos. El módulo 'tkinter' tiene una clase llamada 'Tk' que representa una ventana. Debemos crear un objeto de dicha clase:

ventana1=tk.Tk()

Seguidamente llamamos al método 'title' y le pasamos un string con el mensaje que queremos que aparezca en la barra del título de la ventana:

ventana1.title("Hola Mundo")

Para que se muestre la ventana en el monitor debemos llamar por último al método 'mainloop' que pertenece a la clase Tk:

ventana1.mainloop()

Hemos codificado el programa más pequeño utilizando el módulo 'tkinter':

tkinter

Acotaciones

Si utilizamos el editor VSCode en lugar del editor IDLE podemos tener grandes ventajas cuando codificamos el programa. Por ejemplo luego de escribir el nombre del objeto podemos ver que gracias a 'IntelliSense' se nos muestran todos sus métodos y una descripción del mismo:

tkinter IntelliSense VSCode

Aplicación orientada a objetos

Todos los ejemplos que haremos de ahora en más independientemente de su complejidad utilizaremos la metodología de POO (Programación Orientada a Objetos)

El programa anterior modificado con POO queda:

Programa: ejercicio215.py

import tkinter as tk

class Aplicacion:
    def __init__(self):
        self.ventana1=tk.Tk()
        self.ventana1.title("Hola Mundo")
        self.ventana1.mainloop()


aplicacion1=Aplicacion()

Planteamos una clase llamada 'Aplicacion' y en su método '__init__' creamos el objeto de la clase 'Tk' para que se muestre la ventana.

Debemos crear luego un objeto de la clase 'Aplicacion':

aplicacion1=Aplicacion()