Cargando



Iniciación a las interfaces gráficas de usuario en Python

En este tutorial vamos a iniciarte a crear aplicaciónes gráficas en Python, veremos varios ejemplos con tkinter y uno con PyQt.


ago 12 2016 13:35
Intermedio
ago 16 2016 08:19

En este tutorial vamos a poner ejemplos para implementar aplicaciones con interfaz gráfica en Python, existen muchos módulos para trabajar con una interfaz gráfica, aquí hemos elegido Tkinter, ya que viene preinstalado con Python y nos servirá para ver cómo trabajamos de esta forma, aunque al final veremos un pequeño ejemplo de PyQt.

 

Podemos comprobar si Tkinter está correctamente instalado el módulo usando:

python -m tkinter
Nota
En Python 2 sería la primera t con mayúscula: Tkinter, ya que en Python 3 se renombro.

 

Si está bien instalada veremos que se nos despliega una ventana como la que ponemos a continuación:

 

tkinter_ok.jpg

 

Si no veremos un error, nos indicará que no encuentra dicho módulo:

 

tkinter_notfound.jpg

 

Para instalar el módulo en Python 3 dentro de distribuciones Debian:

sudo apt-get install python3-tk
Para otras versiones consulta el siguiente enlace. El tutorial está enfocado a dar una primera impresión sobre el trabajo con GUI en Python, si eres novel en este tema, entonces te servirá, si buscas temas avanzados este no es el tutorial indicado.

 

Nota
Aquí vamos a trabajar con Python 3, importamos la librería como sigue:
import tkinter
Sin embargo en Python 2 debes importarla como sigue, ya hablamos de que se renombro:
import Tkinter

 

Vamos a empezar el tutorial ejemplo a ejemplo, empezaremos por el más fácil y complicándolo al final.

 

Ejemplo 1

Crearemos una simple ventana para ello escribimos el siguiente código:
import tkinter

window = tkinter.Tk()
window = tkinter.mainloop()
Con la primera línea importamos el módulo necesario, la siguiente crea la ventana principal y si quitamos la última instrucción la ventana no la llegaremos a ver cuándo ejecutemos el código. La salida del ejemplo:

 

ejemplo1_gui.jpg

 

Este ejemplo ha sido muy largo, 3 líneas... Pasemos al siguiente.

 

Ejemplo 2

En este ejemplo, que no es muchisimo más largo que el anterior, vamos a crear la ventana como hicimos en el ejemplo 1, pero vamos a configurarla un poco, la cambiaremos el color, el tamaño y el título.
import tkinter as tk

window = tk.Tk()
window.config(bg="blue")
window.geometry("400x300")
window.title("Ejemplo2")
window.mainloop()
La primera línea sigue importando el módulo tkinter, pero le damos un alias, así podemos utilizar una palabra más corta en el código. Crearemos la ventana igual que en el anterior ejemplo. Y las siguientes 3 líneas van a configurar por orden el color, tamaño y título. La última línea ya la conocemos. La salida del ejemplo es la siguiente:

 

ejemplo2_gui.jpg

 

De momento todo ha sido muy fácil, prosigamos con más ejemplos.

 

Ejemplo 3

Vamos a crear ahora un botón dentro de la ventana principal, que tampoco nos va a complicar mucho, veamos el código:
import tkinter as tk

window = tk.Tk()
window.geometry("200x150")
button = tk.Button(window, text="Testing") 
button.grid(row=1,column=1) 
window.mainloop()
Las únicas líneas que necesitan explicación son:
button = tk.Button(window, text="Testing") 
button.grid(row=1,column=1)
La primera crea un botón con el nombre Testing (button), y se lo asignamos a window, que es la variable de nuestra ventana principal. La segunda coloca el botón en la fila y columna 1. La ejecución nos mostrará lo siguiente:

 

ejemplo3_gui.jpg

 

El botón simplemente se muestra, no funciona, ya que no está atendiendo eventos, vamos a hacerlo en el siguiente ejemplo.

 

Ejemplo 4

Ahora atenderemos un evento para abrir una segunda ventana, que no será principal, veamos el código:
import tkinter as tk

def abrir():
    window2 = tk.Toplevel(window)

window = tk.Tk() 
window.geometry("200x150")
button = tk.Button(window, text="Open", command= abrir) 
button.grid(row=1,column=1) 
window.mainloop() 
Vamos a ver las líneas nuevas, la función abrir tendrá la siguiente instrucción, que creará una ventana “hija” de la principal.
window2 = tk.Toplevel(window)
Y el botón tiene un pequeño cambio, fíjate en command, es para ejecutar una función, en este caso para llamar a la función abrir:
button = tk.Button(window, text="Open", command= abrir)
Vamos a un ejemplo con una clase.

 

Ejemplo 5

Este es el último ejemplo de tkinter, y será el más largo, vamos a crear una clase para hacer algo diferente. Lo que vamos a hacer es una pequeña ventana, que no se podrá cambiar de tamaño, contará con una etiqueta de texto y un botón, cada vez que pulsemos el botón el número se incrementara. Pasemos al código:
import tkinter as tk

class Application():
    contador = 1
    def __init__(self):
        self.window = tk.Tk()
        self.window.geometry("300x60")
        self.window.title("Ejemplo 5")
        self.window.resizable(width=False, height=False)
        self.createButton()
        self.createLabel()
        self.window.mainloop()

    def createButton(self):     
        self.button = tk.Button(self.window, text="Increase", command= self.increase) 
        self.button.pack()

    def createLabel(self):
        self.tag = tk.Label(self.window, text="0", fg="blue")
        self.tag.pack(pady=10)

    def increase(self):
        self.tag["text"] = self.contador
        self.contador += 1

app = Application()
En la función __init__ vamos a crear la ventana y a configurarla, además de llamar a las funciones createButton y createLabel para que nos cree estos elementos. Si hemos visto los anteriores ejemplos, este no debería generar complicaciones, ni dudas. Al iniciar el programa tenemos la ventana con el número en 0:

 

ejemplo5_gui_1.jpg

 

Si vamos pinchando en el botón el número se incrementa, por ejemplo después de pinchar 25 veces tenemos lo siguiente:

 

ejemplo5_gui_2.jpg

 

En este tutorial hemos visto lo básico del módulo tkinter, podrás crear muchas más cosas, si estás interesado en profundizar aquí dispones del enlace a la página oficial de Python en la que hablan de tkinter.

 

Tienes otras librerías en Python con las que puedes programar interfaces gráficas cómo se dijo al principio, algunas de ellas son:

 

Para que puedas comparar un poco tkinter con otro módulo distinto vamos a poner un ejemplo de PyQt.

 

Ejemplo con PyQT

Para lanzar este ejemplo necesitarás instalar la librería, puedes visitar el enlace que pusimos arriba. Vamos a crear una ventana de un tamaño de 275x200 y con título Ejemplo PyQt4. Además aparecerá en la posición 300x300
import sys
from PyQt4 import QtGui

application = QtGui.QApplication(sys.argv)

window = QtGui.QWidget()
window.resize(275, 200)
window.move(300, 300)
window.setWindowTitle('Ejemplo PyQt4')
window.show()

sys.exit(application.exec_())
Si ejecutamos el código obtenemos la siguiente salida:

 

ejemploPyQt.jpg

 

Nada complicado cómo se ha podido observar a lo largo del tutorial, podíamos seguir poniendo ejemplos, ya que hay mucho por donde tocar, pero con una introducción ya te prepara para que practiques creando tus propios ejemplos, metiendo otros elementos, como listas, cuadros de texto donde escribir, etc.


¿Te ayudó este Tutorial?


1 Comentarios


Raquel Alvarez
ago 16 2016 13:56

Excelente, ya podía venir el resto de librerías con Python y no tener que instalar las cosas a parte :)

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X