Python GUI Ventanas

Veamos como crear ventanas y trabajar con interfaces gráficas de usuario (GUI) en Python 3, usaremos la librería tkinter que ya viene incluido en la instalación de python, es un paquete de código abierto, accesible, portable y muy potente, además cuenta con varios extensiones que podemos usar para facilitar aun más nuestro trabajo a la hora de crear GUI.

Para crear una ventana sin mas, importamos tkinter, llamando al método tk() obtenemos la ventana principal, para iniciar el bucle de mensajes de la ventana usamos mainloop().

import tkinter as tk
root = tk.Tk()
root.mainloop()

Para agregar un widget a la ventana inicializamos una instancio de la clase que corresponda al widget que deseamos crear, como primer parametro indicamos la ventana a la que lo agregaremos, si indicamos None (por defecto) se creara una ventana a la que se asociara el widget.

Para empezar vamos a mostrar el clásico programa hola mundo, mostraremos una ventana con una etiqueta (label) que mostrara el mensaje, al trabajar con tkinter las GUI son completamente portables a cualquier plataforma como Linux, Windows y otros.

from tkinter import Label
widget = Label(None, text='Hola GUI tkinter')
widget.pack()
widget.mainloop() 

1. gui hola mundo
Descripción del código:
  1. Carga la clase widget del modulo tkinter 
  2. Crea una instancia de la clase Label, la cual representa una etiqueta de texto, se le asigna la propiedad text con el mensaje que deseamos mostrar. 
  3. El método pack posiciona el Label, como no indicamos nada en la posición por defecto. 
  4. Inicia el bucle de eventos, el cual manejara todos los eventos que produzca nuestra aplicación.

Cambiar título de la ventana

Modificamos un poco en código para que muestre el titulo en la ventana y además agregamos parámetros al método pack para lograr ubicar el label en el centro de la ventana aún cuando cambiemos el tamaño de esta.

from tkinter import *
ventana = Tk()
ventana.title('Ventana tkinter')
widget = Label(ventana, text='Hola GUI tkinter')
widget.pack(expand=YES, fill=BOTH)
ventana.mainloop() 

2. titulo ventana
Descripción del código:
  • 2. Obtener la ventana principal
  • 3. Establecer el título de la ventana.
  • 4. Crea el Label, ahora indicamos en el primer parámetro a que ventana pertenece.
  • 5. Posicionamos el control e indicamos que se puede expandir y se rellena en ambos lados.
De haber creado el widget sin indicarle una ventana principal podemos acceder a la ventana creada automáticamente a través de la variable master, por ejemplo:

import tkinter as tk

lbl = tk.Label(text="Widget Label")
lbl.pack()
lbl.master.title('Tutor de Programacion')
lbl.mainloop()

Personalizar la ventana

Podemos cambiar el aspecto de nuestra ventana, por ejemplo estableciendo un color de fondo, cambiando el tamaño de la ventana, hacerla de tamaño fijo ya sea de alto o de ancho.

from tkinter import *

ventana = Tk()
ventana.config(bg="red")
ventana.geometry("400x200")
ventana.resizable(width=FALSE, height=FALSE)
ventana.title("Tutor de Programacion")
ventana.mainloop()

Personalizar Label Cambiar Fuente

Para cambiar la apariencia del label contamos con opciones para cambiar la fuente, el color y el tamaño entre otras, veamos como hacerlo.
Modificamos la línea 4 del código anterior para que quede de este modo y el resultado será el siguiente:
widget = Label(ventana, text='Hola GUI tkinter', fg = 'skyblue', font=('Ravie', 24))

3. font

Siguiente: Mostrar Imagenes

Comentarios

  1. Tengo una duda, sabes, tengo un juego del ahorcado en python y quiero hacer los dibujos del ahorcado con tkinder. Ya se dibujarlos, pero al momento de implementarlos al programa, se me abre una sola vez el dibujo y el programa no continua :O, siendo que deberia, ¿sabes porque?¿tiene la solucion? Me es de vital urgencia.

    ResponderEliminar
  2. Muy bueno el Tutorial, un detalle , en el último ejemplo tuve que agregar widget.pack() para que se vea el widget

    ResponderEliminar

Publicar un comentario

Temas relacionados

Entradas populares de este blog

tkinter Grid

Conectar SQL Server con Java

tkinter Canvas

Spring Security JSP Taglib

JavaFX Uso de ComboBox