Practica #2
Programación Paralela y Distribuida
Maricela Ocaña
Interfaz Gráfica de Usuario (GUI) con Python
GUI son las siglas de interfaz gráfica de usuario. Son
herramientas para crear interfaces gráficas, esto es, componentes gráficos con
los cuales el usuario interacciona con la aplicación.
A continuación se describirán algunas cosas básicas que
debemos comprender para trabajar con ventanas y para dar un salto desde la consola a la
interfaz, pero antes que nada se describirá algunos de los toolkits para
creación de interfaces gráficas de usuario (GUIs) con Python más populares:
PyGTK , PyQt ,TkInter y wxPython.
PyGTK
El subyacente biblioteca GTK + biblioteca ofrece todo tipo de
elementos visuales y utilidades para ello y, si es necesario, se puede
desarrollar aplicaciones de funciones completas para el escritorio GNOME.
Aplicaciones PyGTK son verdaderamente multiplataforma y que
son capaces de ejecutar, sin modificar, en Linux, Windows, MacOS X y otras
plataformas.
Otras características distintivas de PyGTK son, además de su
facilidad de uso y rápida de prototipos, su primer soporte de accesibilidad
clase o la capacidad para hacer frente con el texto multilingüe o bidireccional
compleja para aplicaciones totalmente localizadas.
PyQt
Binding de la biblioteca gráfica Qt para el lenguaje de
programación Python. La biblioteca está desarrollada por la firma británica
Riverbank Computing y está disponible para Windows, GNU/Linux y Mac OS X bajo
diferentes licencias.
Es especialmente interesante para el desarrollo en KDE, dado
que Qt es la librería utilizada para crear este entorno.
No obstante el interés en Qt no se limita a KDE, sino que es
una biblioteca multiplataforma que, además, desde la versión 4, utiliza widgets
nativos para las distintas plataformas (anteriormente Qt emulaba el aspecto de
la plataforma en la que corría).
PyQt utiliza un modelo de licencias similar al de Qt, con una
licencia dual GPL/PyQt Commercial. Si nuestro programa es compatible con la
licencia GPL, es decir, si vamos a publicar el código fuente y permitir a los
usuarios modificar nuestra aplicación, podremos usar PyQt sin más
preocupaciones. En caso contrario tendremos que pagar para obtener una licencia
comercial.
TkInter
TkInter (de TK Interface) es un módulo que nos permite
construir interfaces gráficas de usuario multiplataforma en Python utilizando
el conocido toolkit Tk. Python incluye este módulo por defecto, lo que hace que
sea un tookit muy popular. TkInter, además, es robusto, maduro y muy sencillo
de aprender y de utilizar, contando con una amplia documentación.
TkInter se distribuye bajo la PSFL (Python Software
Foundation License) una licencia compatible con la GPL creada para la
distribución de software relacionado con el proyecto Python. La PSFL carece de
la naturaleza viral de la GPL, por lo que permite crear trabajos derivados sin
que estos se conviertan necesariamente en software libre.
wxPython
wxPython es un wrapper open source para el toolkit
anteriormente conocido como wxWindows: wxWidgets. wxPython es posiblemente el
toolkit para desarrollo de interfaces gráficas en Python más popular, superando
incluso a TKinter, que, como comentamos, se incluye por defecto con el
intérprete de Python. wxPython cuenta con más y mejores widgets que TKinter, y
ofrece un muy buen aspecto en todas las plataformas, utilizando MFC en Windows
y GTK en Linux.
wxPython cuenta además con herramientas muy interesantes como
wxGlade, una aplicación RAD para diseñar las interfaces gráficas de forma
visual.
Sin embargo, la API adolece de una cierta falta de
consistencia y un estilo muy alejado de Python y más cercano a C++, ya que, de
hecho, uno de sus objetivos es no distanciarse demasiado del estilo de
wxWidgets. Esto ha provocado que hayan aparecido distintos proyectos para
abstraer al programador de los entresijos del toolkit, como Dabo o Wax, aunque
estos han tenido un éxito muy comedido.
Para nuestro ejemplo usaremos TkInter.
Tkinter ofrece varios controles, como botones, etiquetas y
cuadros de texto utilizados en una aplicación GUI. Estos controles son
comúnmente llamados widgets. Para este ejemplo se hara uso de tres widgets.
Paso 1: Importar el módulo en Python.
Paso 2: El módulo tkMessageBox se utiliza
para mostrar cuadros de mensaje en sus aplicaciones. Este módulo proporciona
una serie de funciones que se pueden utilizar para mostrar un mensaje adecuado.
Paso 3: Definimos una función con la instrucción
def más un nombre de función descriptivo en este caso “suma”.
Paso 3.1: Declaramos variables “n1 y n2” de
tipo float de donde se va a obtener el numero ingresado para la suma.
Paso 3.2: Suma contendrá el resultado de la
sumatoria de n1 y n2.
Paso 3.3: Como se mencionó anteriormente en el
Paso 2 tkMessageBox mostrara un cuadro con el mensaje “El resultado es: “.
Paso 4: Definimos una función con la instrucción
def más un nombre de función descriptivo en este caso “Resta”.
Paso 4.1: Declaramos variables “n1 y n2” de
tipo float de donde se va a obtener el numero ingresado para la resta.
Paso 4.2: resta contendrá el resultado de la
resta de n1 y n2.
Paso 4.3: tkMessageBox mostrara un cuadro con
el mensaje “El resultado es: “.
Paso 5: Definimos una función con la instrucción
def más un nombre de función descriptivo en este caso “Multiplicacion”.
Paso 5.1: Declaramos variables “n1 y n2” de
tipo float de donde se va a obtener el numero ingresado para la multiplicación.
Paso 5.2: multiplicacion contendrá el
resultado de la multiplicación de n1 y n2.
Paso 5.3: tkMessageBox mostrara un cuadro con
el mensaje “El resultado es: “.
Paso 6: Definimos una función con la instrucción
def más un nombre de función descriptivo en este caso “División”.
Paso 6.1: Declaramos variables “n1 y n2” de
tipo float de donde se va a obtener el numero ingresado para la division.
Paso 6.2: division contendrá el resultado de
la división de n1 y n2.
Paso 6.3: tkMessageBox mostrara un cuadro con
el mensaje “El resultado es: “.
Paso 7: gui = Tk() es la ventana principal
aunque tú le puedes dar otro nombre en lugar de gui y si queremos darle un color
al fondo de la pantalla usamos gui.config(bg="green").
Paso 8: Se crean etiquetas
Paso 9: Se crean cajas de texto.
Paso 10: Creación de botones ejemplo boton1 =
Button(gui, text = "Suma", command = Suma,width=15)
boton1.pack().
Paso 11: Para inicializar la ventana usamos gui.mainloop().
from Tkinter
import * #Paso 1
import
tkMessageBox #Paso
2
#Metodo para
calcular la suma
def Suma(): #Paso 3
n1=float(caja1.get()) #Paso 3.1
n2=float(caja2.get())
suma=n1+n2 #
Paso 3.2
tkMessageBox.showinfo("Mensaje","El resultado es:
%.2f"%suma) # Paso
3.3
caja1.delete(0,20)
caja2.delete(0,20)
#Metodo para
calcular la resta
def Resta(): #Paso 4
n1=float(caja1.get()) #Paso 4.1
n2=float(caja2.get())
resta=n1-n2 #Paso
4.2
tkMessageBox.showinfo("Mensaje","El
resultado es: %.2f"%resta) #Paso
4.3
caja1.delete(0,20)
caja2.delete(0,20)
#Metodo para
calcular la multiplicacion
def
Multiplicacion(): #Paso
5
n1=float(caja1.get()) #Paso 5.1
n2=float(caja2.get())
multiplicacion=n1*n2 #Paso 5.2
tkMessageBox.showinfo("Mensaje","El
resultado es: %.2f"%multiplicacion) #Paso
5.3
caja1.delete(0,20)
caja2.delete(0,20)
#Metodo para
calcular la división
def
Division(): #Paso
6
n1=float(caja1.get()) #Paso 6.1
n2=float(caja2.get())
division=n1/n2 #Paso 6.2
tkMessageBox.showinfo("Mensaje","El
resultado es: %.2f"%division) #Paso
6.3
caja1.delete(0,20)
caja2.delete(0,20)
#Creacion
del GUI
gui = Tk() #Paso 7
gui.config(bg="green")
# Le da color al fondo
#Titulo del
GUI
gui.title("Calculadora")
#Dimensiones
(ancho,alto,posicion x,posicion y)
gui.geometry("400x250+400+200")
#Creacion de
una etiqueta #Paso 8
var1 =
StringVar()
var1.set("Escribe
el primer número:")
label1 =
Label(gui,textvariable=var1,height = 2)
label1.pack()
#Creación de
una caja de texto para el primer numero
numero1=StringVar() #Paso 9
caja1=Entry(gui,bd=4,textvariable=numero1)
caja1.pack()
#Creacion de
otra etiqueta #Paso 8
var2 =
StringVar()
var2.set("Escribe
el segundo numero:")
label2 =
Label(gui,textvariable=var2,height = 2)
label2.pack()
#Creacion de
otra caja de texto para el segundo numero #Paso
9
numero2=StringVar()
caja2=Entry(gui,bd=4,textvariable=numero2)
caja2.pack()
#Botón para
la suma #Paso 10
boton1 =
Button(gui, text = "Suma", command = Suma,width=15)
boton1.pack()
#Botón para
la resta #Paso
10
boton2 =
Button(gui, text = "Resta", command = Resta,width=15)
boton2.pack()
#Botón para multiplicación #Paso 10
boton3 = Button(gui,
text = "Multiplicacion", command = Multiplicacion,width=15)
boton3.pack()
#Boton para
la division #Paso 10
boton4 =
Button(gui, text = "Division", command = Division,width=15)
boton4.pack()
#Inicializa
el GUI
gui.mainloop() #Paso 11
Y así
finalizamos con el ejemplo.
Las entradas
son 15, 86 y como salidas tenemos 101.
Para más información
visitar Python_gui_programming y el Blog Curiosidades de la Tecnología.
No hay comentarios:
Publicar un comentario