Tutorial TKInter Python (GUI) Parte 1

RESUMEN INTERFAZ GRÁFICA
PRIMERA PARTE
3 Noviembre del 2010

Autor: Grupo 50, Segundo Semestre 2010 (Sede San Carlos)


1. Introducción:

Este tutorial no está hecho para seguirlo al pie de la letra solo son algunas cosas básicas que debemos entender para poder
 trabajar con ventanas y para dar un pequeño salto desde la cónsola a la interfaz. Recordemos que somos la primera
 generación en el TEC que recibe Python, por lo que el tutorial es meramente experimental, y puede contener cosas que no
 son del todo correctas. Se tratará de mostrar cómo se trabaja desde ciertos puntos de vista, y el usuario se encargará de
 desarrollar su propia forma de construir la interfaz.

2. El Módulo que usaremos

Un módulo se puede importar en Python. Existen diferentes formas de crear módulos, y de importarlos. Un módulo puede ser un
 archivo .py, o todo un conjunto de archivos que interactúan con el sistema operativo y la máquina en general.

Por ejemplo el módulo time obtiene datos sobre la fecha, el módulo os obtiene datos sobre el sistema operativo.

Python ya viene con varios módulos integrados, sin embargo nosotros podemos buscar en internet y descargar otros más.

Para construir interfaz gráfica en Python se pueden utilizar varios módulos. Se pueden descargar módulos para crear la
 interfaz de la forma que más nos guste.

Para este manual, usaremos el módulo Tkinter, porque ya viene instalado en Python y es con el que hemos trabajado, y
 bastará para darse una idea de cómo se trabaja en Python con interfaz gráfica.

En algunas versiones de Linux no viene instalado el módulo Tkinter, entonces debemos escribir en la cónsola:
sudo apt-get install python-tk

Mientras que la versión que uno se descarga para Windows ya lo trae.

3. El IDE (El software que usaremos para programar)

Bien, ahora necesitamos un IDE, que es donde programaremos. Yo personalmente he utilizado Eclipse, Netbeans, el que trae
 Python por defecto, uno que se llama Pycharm que es de pago (Lo cual en cierto modo representa un problema) y al final he
 dado con uno que en lo personal me agrada y se llama Pyscripter. La verdad me parece la alternativa más indicada para
 programar en Python (Tomando en cuenta que no realizaremos un super programa empresarial, si no simples prácticas)

En google pueden buscar y encontrarán versiones para varios sistemas operativos.

Si no, pueden utilizar cualquiera que gusten.

4. Importando el módulo

Para importar un módulo en Python escribimos

import nombredelmodulo

Otra forma de hacerlo es

from nombredelmodulo import *

Esto no les va a devolver nada porque el modulo nombredelmodulo no existe. Pero básicamente estas son las formas que se
 usan más.

5. Ventanas

Las ventanas se pueden configurar de diferentes formas. Veamos un ejemplo de una ventana.

Ejemplo 1:

from Tkinter import * # Importa el módulo

v0 = Tk() # Tk() Es la ventana principal

v0.mainloop() # Es el evento que llama al inicio de nuestro programa. Siempre lo lleva la ventana principal.

Esto nos lanza una ventana normal.

http://i.imgur.com/JBz3m.jpg 

Ejemplo 2:

Ahora para colocarle fondo a la ventana sería:

from Tkinter import * # Importa el módulo

v0 = Tk() # Tk() Es la ventana principal
v0.config(bg="black") # Le da color al fondo

v0.mainloop() # Es el evento que llama al inicio de nuestro programa. Siempre lo lleva la ventana principal.

http://i.imgur.com/4dddu.jpg 

Ejemplo 3:

Una forma de controlar el tamaño de la ventana sería el siguiente:

from Tkinter import * # Importa el módulo

v0 = Tk() # Tk() Es la ventana principal
v0.config(bg="black") # Le da color al fondo
v0.geometry("500x500") # Cambia el tamaño de la ventana

v0.mainloop() # Es el evento que llama al inicio de nuestro programa. Siempre lo lleva la ventana principal.

Ejemplo 4:

Bueno como habrán visto, declaramos una variable llamada v0, del tipo Tk().

Además de Tk(), podemos declarar más variables

Toplevel: Crea una nueva ventana
Frame: Coloca los páneles para ordenar los elementos
Canvas: Para dibujar y graficar funciones etc..
Button: Para colocar un botón
Label: Coloca un texto
Message: Coloca un texto
Entry: Coloca una entrada de texto de una linea
Text: Coloca una entrada de texto de varias lineas
Listbox: Coloca una lista con elementos clickeables
Menú: Coloca un menú que puede contener cascadas y elementos clickeables

Existe toda una mecánica para agregar elementos a una ventana. Además de todo esto se pueden colocar imágenes y otras
 cosas. Por el momento estos controles básicos son los que aprenderemos a utilizar:

Ejemplo 5:

Vamos a crear una ventana de tipo Toplevel. En Python ocurre algo curioso, todas las ventanas creadas se abren al mismo
 tiempo. Por eso cuando creamos una  ventana del tipo Toplevel, debemos ocultarla. Veamos un ejemplo:

from Tkinter import * # Importa el módulo

v0 = Tk() # Tk() Es la ventana principal
v0.config(bg="black") # Le da color al fondo
v0.geometry("500x500") # Cambia el tamaño de la ventana

v1=Toplevel(v0) # Crea una ventana hija

v0.mainloop() # Es el evento que llama al inicio de nuestro programa. Siempre lo lleva la ventana principal.

http://i.imgur.com/a9kce.jpg 

Se abre al mismo tiempo las dos ventanas. Esto se evita de la siguiente forma:

from Tkinter import * # Importa el módulo

v0 = Tk() # Tk() Es la ventana principal
v0.config(bg="black") # Le da color al fondo
v0.geometry("500x500") # Cambia el tamaño de la ventana

v1=Toplevel(v0) # Crea una ventana hija

v1.withdraw()  # oculta v1
v0.mainloop() # Es el evento que llama al inicio de nuestro programa. Siempre lo lleva la ventana principal.

Ahí ya ocultó la ventana. Pero cómo mostrarla otra vez?

Ejemplo 6:

Para importar un botón se hace de la siguiente forma:

from Tkinter import * # Importa el módulo

v0 = Tk() # Tk() Es la ventana principal
v0.config(bg="black") # Le da color al fondo
v0.geometry("500x500") # Cambia el tamaño de la ventana
b1=Button(v0,text="ABRIR VENTANA V1") # Primer botón
b1.pack() # El botón es cargado

v1=Toplevel(v0) # Crea una ventana hija

v1.withdraw() # Oculta la ventana v1
v0.mainloop() # Es el evento que llama al inicio de nuestro programa. Siempre lo lleva la ventana principal.

Ese botón no tiene ningún evento, además fue cargado con el método .pack. Lo podemos cargar con el método .grid

Son dos formas distintas de cargar un botón. En vez de la primera forma:
b1=Button(v0,text="ABRIR VENTANA V1") # Primer botón
b1.pack() # El botón es cargado

Pudimos haberlo escrito de esta otra forma:
b1=Button(v0,text="ABRIR VENTANA V1").pack()

En una sola línea. O de esta otra forma:
b1=Button(v0,text="ABRIR VENTANA V1") # Primer botón
b1.grid(row=1,column=1) # El botón es cargado

Y esta otra forma:
b1=Button(v0,text="ABRIR VENTANA V1").grid(row=1,column=1) # El botón es cargado

Hay diversas formas de cargar los botones y que se ajustan a nuestro gusto y forma de hacer las cosas.

Ahora vamos a mostrar la otra ventana.

Primero creamos una función llamada mostrar

def mostrar(ventana):
        ventana.deiconify()

El método deiconify muestra la ventana que había sido oculta por withdraw(). Además una función para ocultar podría ser

def ocultar(ventana):
        ventana.withdraw()

Con solo estas dos funciones ya podemos mostrar y ocultar la ventana 1. vamos a agregar otro botón más y todo junto queda
 de la siguiente forma:

from Tkinter import * # Importa el módulo

v0 = Tk() # Tk() Es la ventana principal
v1=Toplevel(v0) # Crea una ventana hija

def mostrar(ventana): ventana.deiconify()
def ocultar(ventana):ventana.withdraw()
def ejecutar(f): v0.after(200,f)

v0.config(bg="black") # Le da color al fondo
v0.geometry("500x500") # Cambia el tamaño de la ventana

b1=Button(v0,text="ABRIR VENTANA V1",command=lambda: ejecutar(mostrar(v1))) # Primer botón
b1.grid(row=1,column=1) # El botón es cargado
b2=Button(v0,text="OCULTAR VENTANA V1",command=lambda: ejecutar(ocultar(v1))) # Segundo botón
b2.grid(row=1,column=2) # El botón es cargado

v1.withdraw() # Oculta la ventana v1
v0.mainloop() # Es el evento que llama al inicio de nuestro programa. Siempre lo lleva la ventana principal.

http://i.imgur.com/gMOyS.jpg 

El próximo archivo comentaremos algunos aspectos a tomar en cuenta a la hora de mostrar y ocultar ventanas

1 comentario:

Publicar un comentario

gmendezm
Portada
Lista Principal