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.
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.
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.
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.
1 comentario:
muy bueno gracias
Publicar un comentario