Está en la página 1de 18

Sobre este documento...

Los contenidos de este documento estn bajo la licencia Creative Commons Esta versin impresa se creo el 10 de Julio de 2008 y todava esta incompleta, si deseas descargar la ltima versin puede informarte en http://www.elcodigok.com.ar Si deseas aportar sugerencias, comentarios, crticas o informar la presencia de errores puede hacerlo a danyx@elcodigok.com.ar Para ms informacin les recomiendo que visiten mi blog El CoDiGo K http://www.elcodigok.com.ar y LaREPAWEB http://www.larepaweb.com.ar

PyQT Desarrollando Aplicaciones de Escritorio


Esta pequea gua es el resultado de una recopilacin y de horas de trabajo, motivado desde hace tiempo, debido a que muchos programadores quieren comenzar a programar con estas dos grandiosas herramientas y muchas veces no sabe como dar los primeros pasos sin quedarse en el intento. Para ello esta gua intenta ser un documento de referencia y de motivacin para comenzar a trabajar y realizar interfaces de usuarios muy simples.

INTRODUCCIN

Qu es Python?
Python es un Lenguaje de Programacin creado por Guido van Rossum en el ao 1990, este personaje ya se los haba presentado anteriormente en nuestra seccin de Programadores. Es un lenguajes muy comparado con TCL, Perl, Scheme, Java y Ruby. En la actualidad Python se desarrolla como un proyecto de cdigo abierto, administrado por la Python Software Foundation. La ltima versin estable del lenguaje es actualmente la 2.5.1 (18 de abril de 2007). Python permite dividir el programa en mdulos reutilizables desde otros programas Python. Viene con una gran coleccin de mdulos estndar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). Tambin hay mdulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz grfica con el usuario) como Tk, GTK, Qt entre otros. Python es un lenguaje interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intrprete se puede utilizar de modo interactivo, lo que facilita experimentar con caractersticas del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. Tambin es una calculadora muy til.

Caractersticas de Python
En primer lugar les comento que Python es un Lenguaje de Programacin multiparadigma, lo cual significa que no trata de forzar a los programadores a adoptar un determinado modelo de paradigma o estilo sino que permite varios. Entre ella tenemos POO (Programacin

Orientada a Objetos), Programacin Estructurada, Programacin Funcional y la Programacin orientada a Aspectos. Python utiliza tipado dinmico de datos (puede tomar una variable diferentes tipos de datos durante la ejecucin del programa) y referencia counting para el manejo de memoria. Otra caracterstica importante de Python es la resolucin dinmica de nombres, lo que enlaza un mtodo y un nombre de variable durante la ejecucin del programa. Otro objetivo del diseo del lenguaje era la facilidad de extensin. Nuevos mdulos se pueden escribir fcilmente en C o C++. Python puede utilizarse como un lenguaje de extensin para mdulos y aplicaciones que necesitan de una interfaz programable. Aunque el diseo de Python es de alguna manera hostil a la programacin funcional tradicional del Lisp, existen bastantes analogas entre Python y los lenguajes minimalistas de la familia del Lisp como puede ser Scheme.

Las libreras QT
QT es una biblioteca multiplataforma, creadas para desarrollar interfaces grficas de usuarios. Fue creada por la compaa noruega Trolltech (una compaa de software fundada en el ao 1994). Seguramente reconocers a QT ya que el mismo utiliza el entorno grfico KDE (K Desktop Environment) un entorno grfico para los sistemas operativos GNU/Linux o FreeBSD entre otros. Es desarrollado con el lenguaje de programacin C++ de forma nativa pero existen mdulos para otros lenguajes de programacin como ser C, Python (PyQT), Java (QT Jambi), Perl (PerlQT), Gambas (gb.qt), Ruby (QTRuby), PHP (PHP-QT), Mono (Qyoto), entre los ms reconocidos. Es un librera totalmente Orientada a Objetos, es por ello que las API (Application Programming Interface) cuenta con diferentes mtodos, soporta el uso de diferentes motores de Bases de Datos y el uso de archivos XML, adems de otras estructuras de datos tradicionales. Estas libreras de desarrollo se encuentran disponibles para las siguientes plataformas:

X11 - Para X Windows System (GNU/Linux, Unix, BSD). Mac - Para los sistemas Mac OS X.

Windows - Para las diferentes versiones del Sistema Operativo Windows. PDA - Para los dispositivos empotrados.

De este modo podemos ver que en diferentes plataformas es totalmente compatibles y listo para migrar.

MI PRIMER PROGRAMA REALIZADO CON PyQT

Basta de palabras y vamos a comenzar a programar y conocer lo simple que puede llegar a ser esto. En principio vamos a necesitar algunas aplicaciones instaladas, como ser:

El IDE de programacin KDevelop, en l encontraremos la herramienta KDevelopDesigner Python, el lenguaje interpretado a utilizar. Python-qt-dev Python-qt3 pyqt-tools

Una ves que comprobamos que tenemos instalado todas estas herramientas podemos decir que estamos listos para comenzar a desarrollar. Lo primero que vamos a realizar comenzar a utilizar KDevelopDesigner, para poder realizar nuestros formularios, les comento que vamos a realizar el clsico ejemplo Hola Mundo!. Para aquellas personas que no conocen de que se trata KDevelopDesigner les comento que se trata de una herramienta que nos permite realizar

interfaces de usuarios, formularios, Widget, etc, desarrollado para las libreras QT. KDevelopDesigner tiene una particularidad que realmente es muy interesante y es algo que debemos comprender bien, les comentaba que a travs de esta herramienta vamos a poder desarrollar nuestros formularios, los mismos se van a almacenar como archivos de extensin .ui, estos archivos poseen un contenido al estilo XML pero que no corresponde para un lenguaje de programacin en particular. Esto quiere decir que nosotros debemos transformar este archivo .ui a un archivo para nuestro lenguaje de programacin, entonces estos formularios creados podemos utilizar tanto para C, C++, Python, Ruby, etc. Ms adelante vamos a ver como realizar esta operacin. Volvamos un poco a KDevelopDesigner vamos a crear un nuevo archivo y en particular vamos a escoger un archivo Widget

Una ves que seleccionamos Widget vamos a poder utilizar por completo esta herramienta. Podemos observar que nos aparece un formulario en la parte central de IDE, en la parte izquierda nos encontramos con los diferentes Widget que podemos agregar al formulario como ser, Linea de Texto, Botones, Listas, ComboBox, Labels, Radios, Check, Contenedores, etc. Entonces podemos apreciar que a nuestros formularios vamos a poder agregarle una gran cantidad de Widget para realizar diferentes operaciones.

Como dijimos anteriormente en la parte central podemos apreciar el formulario que vamos desarrollando y agregndole diferentes cosas. Por ltimo podemos observar a la derecha que encontramos un explorador de proyectos, donde podemos ver todos los proyectos que tenemos abiertos, un explorador de Objetos en donde podemos conocer rpidamente todos los objetos que contiene el formulario y por ltimo un editor de propiedades de cada objeto, en donde podemos configurar y editar cada una de las propiedades que contiene cada uno de los objetos, ms adelante vamos a ver en detalle estas cosas. La siguiente imagen muestra todo lo descripto anteriormente.

Rpidamente vamos a comenzar a utilizar algunas propiedades de los formulario, para ello seleccionamos el formulario, y nos dirigimos hasta donde se encuentras las propiedades y nos dirigimos a caption y modificamos la leyenda Form1 por algo que deseamos cambiar.

En el ejemplo que estamos desarrollando vemos como lo modificamos para que figure como titulo otra leyenda. Otra propiedad que es importante para modificar es la propiedad name y que nos indica el nombre del formulario, para el ejemplo les recomendara que lo llamen Formulario. Ahora comencemos a agregar algunos objetos a nuestro formulario, para ello lo nico que debemos realizar es identificar el objeto que queremos agregar, seleccionarlo y luego colocarlo en el formulario, as de simple como vemos en el ejemplo

De la misma manera vamos a ir agregando algunos botones y otros agregados, siempre les recomendara que modifiquen a todos los objeto la propiedad name, ya que es muy importante y lo vamos a ver en la programacin y interaccin. Colocar nombre representativos por ejemplo a la Lnea de Texto agregado yo le coloque LineaEdicion. Ahora agregamos dos botones, uno con el name BotonHola y

podemos modificar la propiedad text, que para el caso de los botones especifica la leyenda que se muestra en cada uno de los mismo.

Y agregamos el clsico botn salir, donde nuevamente le cambiamos la propiedad name por BotonSalir y la propiedad text por una leyenda como ser Salir. De este modo podemos ver que nos queda el formulario terminada y armado.

Ahora podemos ir agregando algunas funcionalidades y correcciones a este formulario, por ejemplo podemos modificar el orden del foco de cada uno de los objetos como en la siguiente imagen.

Ahora vamos a aplicar y relacionar algunas funciones a los botones relacionados, por ejemplo vamos a realizar una conexin, para ello nos dirigimos hasta el men Edicin y nos dirigimos a la opcin Connections. En l vamos a podes seleccionar cual es el objeto que emite el mensaje, la seal con la cual se produce el evento, el objeto receptor de la seal y por ltimo la funcin que se va a desencadenar.

En el ejemplo vemos que la seal la emite el BotonSalir, a travs de un clicked(), lo recibe el objeto formulario, y desencadena la funcin close(). As es como entendemos este mecanismo, pero muchas veces podemos definir nuevas funciones o Slots propias. Para realizar esto nos dirigimos nuevamente al men Edicin, Slots. Alli se listarn todas las funciones, para crear una nueva vamos a New Function, y ahora creamos por ejemplo la funcin

Saludar() con todos los valores por defectos, por ejemplo Specifier virtual, Access Public y Type slot.

Ahora debemos conectar nuestro BotonHola para que active la funcin Saludar(), esto lo realizamos de la misma manera que el procedimiento anterior, nos dirigimos hasta el men Edicin, Connections, hay seleccionamos cual es el objeto de activacin, bajo que evento, cual es el objeto que receptor y la funcin desencadenante, en este caso y como lo muestra el siguiente grfico la funcin Saludar() Esto como vern nos va a ser ms que til para personalizar nuestras funciones y agregarle todas las funcionalidades.

Hasta aqu podemos decir que ya tenemos completado el diseo de nuestro formulario que vamos a utilizar, con conexiones entre algunos

objetos que desencadenan y activan algunas funciones a realizar. Ahora como les contaba anteriormente este formulario editado por KdevelopDesigner es general, y no especfico para cada lenguaje de programacin. Entonces para transformar el archivo .ui en una biblioteca de clases de Python nos va a ayudar la herramienta pyuic, un traductor que nos va a permitir llevar a cabo esta tarea.

Como pueden observar en el anterior ejemplo realmente es ms que simple, yo les puedo hacer una recomendacin, simplemente que al archivo que van a convertir pueden nombrarlo de la misma forma, no por alguna restriccin en particular sino ms bien por una cuestin que en proyectos grandes posiblemente sea mas complicado reconocerlo por la cantidad de archivos y perdamos tiempo. Si tenemos la posibilidad de ver el cdigo fuente del nuevo archivo transformado, podemos observar que ahora esta escrito como clases dentro de Python como en la siguiente ilustracin. Ahora les voy a hacer otra recomendacin, al momento de programar, es bueno que lo

podamos hacer bajo algn editor o IDE que nos encontremos cmodos de utilizar. Si bien Python cuenta con un centenar de IDEs, es posible crear nuestros escripts desde cualquier editor de texto plano, Vim, Emacs, Nano, Kate, Gedit, KDevelop, etc. A mi particularmente me gusta trabajar siempre con dos editores con el Kate y con el vim, ustedes escojan los que les gusten. Lo que vamos a hacer es ahora crear un nuevo archivo con extensin .py que lo que va a realizar es cargar la biblioteca de clases y hacer que se ejecute el formulario creado. Para ello creamos un nuevo archivo en nuestro editor escogido y en este ejemplo lo llamaremos holamundo.py como en la siguiente ilustracin

Y ahora procedemos a codificar lo que en el grfico se encuentra documentado.

Como podemos apreciar el cdigo escrito no presenta tanta dificultad, primero cargamos los mdulos y libreras qt, sys y ms adelante importamos la clases que se encuentra en el archivo formulario. Definimos la funcin main(), instanciamos algunos objetos, convocamos al formulario, lo hacemos aparecer y por ltimo controlamos el programa. Si bien con esta explicacin no quiero ensear a programar en Python pero si hacer referencia a la integracin que podemos llegar a lograr con las libreras QT. Para poder ejecutar esta aplicacin lo nico que debemos hacer es acercarnos hasta una terminal y utilizar el intrprete de Python.

De esta manera podemos observar que ya tenemos nuestro formulario controlado por Python. Ahora vamos a hacer uso nuevamente de la programacin orientada a objeto y ac va otra recomendacin para que tengan en cuenta. Al tener un archivo dependiente del archivo .ui sera una buena opcin no operar con el mismo ya que si comenzamos a modificar el archivo pero resulta que despus a nuestro formulario debemos agregarle un botn ms, utilizamos el archivo .ui, editamos con KdevelopDesigner, lo agregamos, modificamos algunas propiedades, y ahora transformamos nuevamente el archivo .ui a .py con la herramienta pyuic, todas las modificaciones que tenamos sern borradas, para evitar esto vamos a hacer uso de la herencia. Entonces en el nuevo archivo creado vamos a hacer una clase que herede de la que contiene todos los mtodos y propiedades del formulario.

De esta forma vemos como localmente estamos modificando el mtodo saludar, personalizndolo y desde ya va a ser totalmente independiente del original, y todo esto gracias a la Herencia y Polimorfismo del paradigma orientado a Objetos. Para ello como vern es recomendable tener algo de conocimientos de teora de programacin orientada a objetos y una base del lenguaje de programacin Python. Entonces si ejecutamos la aplicacin y pulsamos sobre el botn Hola Mundo!, vamos a ver que aparece en la Lnea de Texto del formulario un mensaje

Con lo cual podemos decir que esta pequea aplicacin esta siendo ejecutada correctamente y utilizando las libreras QT. Por ltimo demos un repaso de los archivo que tenemos creado.

Tenemos tres archivo con el mismo nombre, el primero es el que transformamos con el traductor pyuic, el segundo el archivo .pyc es un archivo especial de Python precompilado por tenerlo como un modulo y se crea automticamente y por ltimo el archivo .ui que es el archivo que se genera con KDevelopDesigner. Al final nos encontramos con el archivo integrador llamado holamundo.py, en done convocamos a travs de mdulos a los anteriores y heredamos todos sus mtodos para trabajarlos localmente. Por ltimo y para terminar solo nos queda otorgarle permiso de ejecucin al archivo creado de la siguiente manera.

Y ya nos va a quedar un archivo completo y funcional. El desafo de ac en adelantes es jugar un poco ms con los Widget y los objetos que encontramos en KDevelopDesigner y que podemos agregar en nuestros formularios, para que de esa manera podamos conocer como se utilizan en Python, implementar sus mtodos, propiedades, etc.

También podría gustarte