Saltar a contenido

La biblioteca tkinter

Entre los módulos de la biblioteca estándar, Python incluye tkinter, un módulo que contiene funciones para crear ventanas gráficas y mostrarlas en el escritorio de la computadora.

Un primer ejemplo

Vamos a crear un programa que, al ejecutarse, muestre la siguiente ventana:

Las ventana tiene las siguientes características:

  • Medidas: 500 x 300 pixels. Un pixel es un punto de color en la pantalla, y los objetos gráficos tienen un tamaño medida en pixels.
  • Título de la ventana: "Prueba tkinter"
  • Un espacio con fondo color beige donde podemos escribir y dibujar. Allí hemos puesto la palabra "Hola". A este espacio se le llama canvas (lienzo).
  • Una barra inferior donde ponemos un botón Terminar. Pulsando, se cierra la ventana y acaba el programa.

El programa es el siguiente:

Tkinter1.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from tkinter import *

ventana = Tk()

lienzo= Canvas(ventana)
lienzo.configure(width=500)
lienzo.configure(height=300)
lienzo.configure(bg='AntiqueWhite')
lienzo.pack()

lienzo.create_text(30,30, text="Hola")

boton=Button(ventana)
boton.configure(text="Terminar")
boton.configure(command=ventana.destroy)
boton.pack()

ventana.title("Prueba tkinter")
ventana.mainloop()

Explicación del programa

Comenzamos por importar los elementos de la biblioteca tkinter:

from tkinter import *

La ventana es un objeto de la clase Tk:

ventana = Tk()

Los objetos se crean invocando una función constructora, cuyo nombre es el de la clase.

En nuestra ventana, colocamos dos objetos, un lienzo donde pintar, y un botón. El primero es un objeto de la clase Canvas, y el segundo, de la clase Button:

lienzo= Canvas(ventana)
boton=Button(ventana)

lienzo.pack()
boton.pack()

Los creamos pasando como argumento el componente "padre", que es la ventana. Esto significa que deben quedar insertados y ligados a la ventana. Los colocamos uno a continuación del otro haciendo una llamada al método pack(). Se situarán verticalmente, y el tamaño de la ventana se ajustará automáticamente para dar cabida a ambos componentes.

El título de la ventana se establece con el método title:

ventana.title("Prueba tkinter")

El método mainloop() pone en marcha el proceso gestor de eventos, que permite controlar cuando el usuario pulsa en el botón.

Configurando un objeto

Los objetos de tkinter tienen un método configure() que permite establecer varios parámetros del lienzo, las dimensiones, color de fondo, etc:

lienzo.configure(width=500)            # ancho en pixels
lienzo.configure(height=300)           # alto en pixels
lienzo.configure(bg='AntiqueWhite')    # color de fondo (background)

Escribiendo en un Canvas

El método create_text() permite poner un texto en el lienzo. Como argumentos debemos pasar las coordenadas. La esquina superior izquierda se corresponde con las coordenadas 0,0

lienzo.create_text(30,30, text="Hola")

Ponemos el texto 30 puntos a la derecha de la esquina, y otros 30 hacia abajo, dejando un margen.

Configurando un botón

Para definir el texto del botón, escribimos:

boton.configure(text="Terminar")

Para definir la acción a ejecutar usamos el parámetro command. Le asignamos el nombre de una función o un método:

boton.configure(command=mifuncion)

Nótese que asignamos el nombre de la función sin paréntesis, porque con ellos, estaríamos ejecutándola y asignando su resultado.

En nuestro ejemplo, asignamos el método destroy() de la ventana, con lo que esta se cierra y finaliza el programa:

boton.configure(command=ventana.destroy)

Acerca de Tkinter

Tkinter es una biblioteca gráfica basada en la biblioteca Tk, concebida inicialmente para el lenguaje Tcl. No es una biblioteca específica de Python, y muchas de sus características se derivan de sus origenes tan peculiares. De todas formas, se incluye entre las herramientas Python desde las primeras versiones, y se ha ido convirtiendo en el estándar de facto.

Alternativas a tkinter

Entre las bibliotecas de terceros hay otras alternativas más potentes que podemos instalar y usar en nuestros programas:

Véase Wiki de Python para obtener una lista más amplia.

Ejecutar aplicaciones sin ventana de consola

Cuando ejecutamos un programa Python, este se muestra en una ventana de texto. Y en el caso de programas tkinter, se abren dos ventanas, la consola, y la gráfica.

Para evitar la ventana de texto, debemos empaquetar el programa en formato binario nativo, independiente del intérprete de Python. Se hace con herramientas especiales, tales como:

  • py2exe genera archivos ejecutables Windows
  • py2app genera archivos ejecutables Mac
  • pyinstaller es válido para Windows, MacOS X, y Linux
  • Python for Android genera archivos binarios que pueden ejecutarse en Android.

De todas formas, esto va más allá del propósito de este cuaderno.