Programación GUI en Python (Tkinter)

Python proporciona varias bibliotecas para el desarrollo de interfaces gráficas. Algunas bibliotecas GUI de Python de uso común son:

  • Tkinter:El módulo Tkinter (interfaz Tk) es la interfaz del kit de herramientas GUI Tk estándar de Python. Tk y Tkinter se pueden usar en la mayoría de las plataformas Unix, y también se pueden aplicar en sistemas Windows y Macintosh. Las versiones posteriores a Tk8.0 pueden implementar estilos de ventana nativos y funcionar bien en la gran mayoría de las plataformas.

  • wxPython:wxPython es un software de código abierto y una excelente biblioteca de gráficos GUI para el lenguaje Python, que permite a los programadores de Python crear fácilmente interfaces de usuario GUI completas y totalmente funcionales.

  • Jython:Los programas Jython se pueden integrar perfectamente con Java. Además de algunos módulos estándar, Jython utiliza módulos de Java. Jython tiene casi todos los módulos de Python estándar que no dependen del lenguaje C. Por ejemplo, la interfaz de usuario de Jython utilizará Swing, AWT o SWT. Jython se puede compilar de forma dinámica o estática en bytecode de Java.


Programación con Tkinter

Tkinter es la biblioteca GUI estándar de Python. Python puede crear rápidamente aplicaciones GUI usando Tkinter.

Dado que Tkinter está integrado en el paquete de instalación de Python, solo necesita instalar Python para poder importar la biblioteca Tkinter, y IDLE también está escrito con Tkinter. Para interfaces gráficas simples, Tkinter puede manejarlas sin problemas.

Nota: El nombre de la biblioteca utilizada en la versión Python3.x es tkinter, es decir, la primera letra T está en minúscula.

import tkinter

Crear un programa GUI

  • 1. Importar el módulo Tkinter
  • 2. Crear el control
  • 3. Especificar el master de este control, es decir, a qué pertenece este control
  • 4. Informar al GM (geometry manager) que se ha creado un control.

Ejemplo (Python3.x)

#!/usr/bin/python3 import tkinter top = tkinter.Tk() # Entrar en el bucle de mensajes top.mainloop()

Ejemplo (Python2.x)

#!/usr/bin/python # -*- coding: UTF-8 -*- import Tkinter top = Tkinter.Tk() # Entrar en el bucle de mensajes top.mainloop()

El resultado de ejecutar el código anterior se muestra en la siguiente figura:

tkwindow

Ejemplo

#!/usr/bin/python # -*- coding: UTF-8 -*- # Método de importación en Python2.x from Tkinter import * # Importar la biblioteca Tkinter # Método de importación en Python3.x #from tkinter import * root = Tk() # Crear el color de fondo del objeto de ventana # Crear dos listas li = ['C','python','php','html','SQL','java'] movie = ['CSS','jQuery','Bootstrap'] listb = Listbox(root) # Crear dos componentes de lista listb2 = Listbox(root) for item in li: # Insertar datos en el primer widget listb.insert(0,item) for item in movie: # Insertar datos en el segundo widget listb2.insert(0,item) listb.pack() # Colocar los widgets en la ventana principal listb2.pack() root.mainloop() # Entrar en el bucle de mensajes

El resultado de ejecutar el código anterior se muestra en la siguiente figura:


Componentes de Tkinter

Tkinter proporciona varios controles, como botones, etiquetas y cuadros de texto, que se utilizan en una aplicación GUI. Estos controles suelen denominarse controles o widgets.

Actualmente hay 15 widgets de Tkinter. Presentamos estos widgets junto con una breve descripción en la siguiente tabla:

ControlDescripción
ButtonControl de botón; muestra un botón en el programa.
CanvasControl de lienzo; muestra elementos gráficos como líneas o texto.
CheckbuttonControl de casilla de verificación; se utiliza para proporcionar casillas de selección múltiple en el programa.
EntryControl de entrada; se utiliza para mostrar contenido de texto simple.
FrameControl de marco; muestra un área rectangular en la pantalla, utilizado principalmente como contenedor.
LabelControl de etiqueta; puede mostrar texto y mapas de bits.
ListboxControl de lista; el widget Listbox se utiliza para mostrar una lista de cadenas al usuario.
MenubuttonControl de botón de menú; se utiliza para mostrar elementos de menú.
MenuControl de menú; muestra barras de menú, menús desplegables y menús emergentes.
MessageControl de mensaje; se utiliza para mostrar texto de varias líneas, similar a la etiqueta.
RadiobuttonControl de botón de opción; muestra el estado de un botón de selección única.
ScaleControl de escala; muestra una escala numérica para limitar el rango de números de salida.
ScrollbarControl de barra de desplazamiento; se utiliza cuando el contenido excede el área visible, como en una lista.
TextControl de texto; se utiliza para mostrar texto de varias líneas.
ToplevelControl de contenedor; se utiliza para proporcionar un cuadro de diálogo independiente, similar a Frame.
SpinboxControl de entrada; similar a Entry, pero se puede especificar un rango de valores de entrada.
PanedWindowPanedWindow es un complemento de gestión de diseño de ventanas que puede contener uno o más subcontroles.
LabelFramelabelframe es un control de contenedor simple. Se usa a menudo para diseños de ventanas complejos.
tkMessageBoxSe utiliza para mostrar el cuadro de mensaje de su aplicación.

Atributos estándar

Los atributos estándar son atributos comunes a todos los controles, como el tamaño, la fuente y el color, etc.

Atributo Descripción
Dimension Tamaño del control;
Color Color del control;
Font Fuente del control;
Anchor Punto de anclaje;
Relief Estilo del control;
Bitmap Mapa de bits;
Cursor Cursor;

Gestión geométrica

Los controles de Tkinter tienen métodos específicos de gestión de estado geométrico que organizan toda el área de controles. Las siguientes son las clases de gestión geométrica que Tkinter expone: pack, grid, place.

Método geométrico Descripción
pack() Pack;
grid() Grid;
place() Place;
Otras extensiones