SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Sobre este documento...
 Los contenidos de este documento están bajo la licencia Creative
 Commons

 Esta versión impresa se creo el 10 de Julio de 2008 y todavía esta
 incompleta, si deseas descargar la última versión puede informarte en
 http://www.elcodigok.com.ar

 Si deseas aportar sugerencias, comentarios, críticas o informar la
 presencia de errores puede hacerlo a danyx@elcodigok.com.ar

 Para más información 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 pequeña guía es el resultado de una recopilación 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 guía intenta ser un documento de referencia y de
 motivación para comenzar a trabajar y realizar interfaces de usuarios
 muy simples.
INTRODUCCIÓN


¿Qué es Python?
 Python es un Lenguaje de Programación creado por Guido van Rossum
 en el año 1990, este personaje ya se los había presentado
 anteriormente en nuestra sección de Programadores.

 Es un lenguajes muy comparado con TCL, Perl, Scheme, Java y Ruby.
 En la actualidad Python se desarrolla como un proyecto de código
 abierto, administrado por la Python Software Foundation. La última
 versión estable del lenguaje es actualmente la 2.5.1 (18 de abril de
 2007).

 Python permite dividir el programa en módulos reutilizables desde otros
 programas Python. Viene con una gran colección de módulos estándar
 que se pueden utilizar como base de los programas (o como ejemplos
 para empezar a aprender Python). También hay módulos incluidos que
 proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta
 interfaces a GUI (interfaz gráfica 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 intérprete se puede utilizar de modo interactivo,
 lo que facilita experimentar con características del lenguaje, escribir
 programas desechables o probar funciones durante el desarrollo del
 programa. También es una calculadora muy útil.

Características de Python
 En primer lugar les comento que Python es un Lenguaje de
 Programación 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 (Programación
Orientada a Objetos), Programación Estructurada, Programación
 Funcional y la Programación orientada a Aspectos.

 Python utiliza tipado dinámico de datos (puede tomar una variable
 diferentes tipos de datos durante la ejecución del programa) y referencia
 counting para el manejo de memoria. Otra característica importante de
 Python es la resolución dinámica de nombres, lo que enlaza un método
 y un nombre de variable durante la ejecución del programa.

 Otro objetivo del diseño del lenguaje era la facilidad de extensión.
 Nuevos módulos se pueden escribir fácilmente en C o C++.

 Python puede utilizarse como un lenguaje de extensión para módulos y
 aplicaciones que necesitan de una interfaz programable. Aunque el
 diseño de Python es de alguna manera hostil a la programación
 funcional tradicional del Lisp, existen bastantes analogías entre Python
 y los lenguajes minimalistas de la familia del Lisp como puede ser
 Scheme.



Las librerías QT
 QT es una biblioteca multiplataforma, creadas para desarrollar
 interfaces gráficas de usuarios. Fue creada por la compañía noruega
 Trolltech (una compañía de software fundada en el año 1994).

 Seguramente reconocerás a QT ya que el mismo utiliza el entorno
 gráfico KDE (K Desktop Environment) un entorno gráfico para los
 sistemas operativos GNU/Linux o FreeBSD entre otros.

 Es desarrollado con el lenguaje de programación C++ de forma nativa
 pero existen módulos para otros lenguajes de programación como ser
 C, Python (PyQT), Java (QT Jambi), Perl (PerlQT), Gambas (gb.qt),
 Ruby (QTRuby), PHP (PHP-QT), Mono (Qyoto), entre los más
 reconocidos.

 Es un librería totalmente Orientada a Objetos, es por ello que las API
 (Application Programming Interface) cuenta con diferentes métodos,
 soporta el uso de diferentes motores de Bases de Datos y el uso de
 archivos XML, además de otras estructuras de datos tradicionales.

 Estas librerías 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 programación 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 clásico
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
librerías QT.

KDevelopDesigner tiene una particularidad que realmente es muy
interesante y es algo que debemos comprender bien, les comentaba
que a través de esta herramienta vamos a poder desarrollar nuestros
formularios, los mismos se van a almacenar como archivos de extensión
.ui, estos archivos poseen un contenido al estilo XML pero que no
corresponde para un lenguaje de programación en particular.

Esto quiere decir que nosotros debemos transformar este archivo .ui a
un archivo para nuestro lenguaje de programación, entonces estos
formularios creados podemos utilizar tanto para C, C++, Python, Ruby,
etc. Más adelante vamos a ver como realizar esta operación.

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 agregándole 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
rápidamente 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, más adelante vamos a ver en detalle estas cosas.

La siguiente imagen muestra todo lo descripto anteriormente.




Rápidamente 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 recomendaría 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 recomendaría que modifiquen a todos los objeto
la propiedad name, ya que es muy importante y lo vamos a ver en la
programación y interacción. Colocar nombre representativos por
ejemplo a la Línea 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 clásico botón 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 conexión, para ello nos
dirigimos hasta el menú Edición y nos dirigimos a la opción
Connections.

En él vamos a podes seleccionar cual es el objeto que emite el
mensaje, la señal con la cual se produce el evento, el objeto receptor de
la señal y por último la función que se va a desencadenar.




En el ejemplo vemos que la señal la emite el BotonSalir, a través de un
clicked(), lo recibe el objeto formulario, y desencadena la función
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ú       Edición,
Slots.


Alli se listarán todas
las funciones, para
crear una nueva
vamos        a    New
Function, y ahora
creamos            por
ejemplo la función
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 función
Saludar(), esto lo realizamos de la misma manera que el procedimiento
anterior, nos dirigimos hasta el menú Edición, Connections, hay
seleccionamos cual es el objeto de activación, bajo que evento, cual es
el objeto que receptor y la función desencadenante, en este caso y
como lo muestra el siguiente gráfico la función Saludar()

Esto como verán nos va a ser más que útil para personalizar nuestras
funciones y agregarle todas las funcionalidades.




Hasta aquí podemos decir que ya tenemos completado el diseño 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 específico para cada lenguaje de
programación.

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 más que
simple, yo les puedo hacer una recomendación, simplemente que al
archivo que van a convertir pueden nombrarlo de la misma forma, no
por alguna restricción en particular sino más bien por una cuestión que
en proyectos grandes posiblemente sea mas complicado reconocerlo
por la cantidad de archivos y perdamos tiempo.

                                                   Si     tenemos     la
                                                   posibilidad de ver
                                                   el código fuente del
                                                   nuevo        archivo
                                                   transformado,
                                                   podemos observar
                                                   que ahora esta
                                                   escrito        como
                                                   clases dentro de
                                                   Python como en la
                                                   siguiente
                                                   ilustración.


                                                   Ahora les voy a
                                                   hacer         otra
                                                   recomendación, al
                                                   momento        de
                                                   programar,     es
                                                   bueno    que    lo
podamos hacer bajo algún editor o IDE que nos encontremos cómodos
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 extensión
.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
ilustración



Y ahora procedemos a codificar lo que en el gráfico se encuentra
documentado.
Como podemos apreciar el código escrito no presenta tanta dificultad,
primero cargamos los módulos y librerías qt, sys y más adelante
importamos la clases que se encuentra en el archivo formulario.

Definimos la función main(), instanciamos algunos objetos, convocamos
al formulario, lo hacemos aparecer y por último controlamos el
programa.

Si bien con esta explicación no quiero enseñar a programar en Python
pero si hacer referencia a la integración que podemos llegar a lograr con
las librerías QT.

Para poder ejecutar esta aplicación lo único que debemos hacer es
acercarnos hasta una terminal y utilizar el intérprete de Python.




De esta manera podemos observar que ya tenemos nuestro formulario
controlado por Python.

Ahora vamos a hacer uso nuevamente de la programación orientada a
objeto y acá va otra recomendación para que tengan en cuenta. Al tener
un archivo dependiente del archivo .ui sería una buena opción no operar
con el mismo ya que si comenzamos a modificar el archivo pero resulta
que después a nuestro formulario debemos agregarle un botón más,
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 teníamos serán 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 métodos y propiedades del
formulario.
De esta forma vemos como localmente estamos modificando el método
saludar, personalizándolo 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 verán es recomendable tener algo de conocimientos de
teoría de programación orientada a objetos y una base del lenguaje de
programación Python. Entonces si ejecutamos la aplicación y pulsamos
sobre el botón Hola Mundo!, vamos a ver que aparece en la Línea de
Texto del formulario un mensaje




Con lo cual podemos decir que esta pequeña aplicación esta siendo
ejecutada correctamente y utilizando las librerías 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 automáticamente 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
través de módulos a los anteriores y heredamos todos sus métodos
para trabajarlos localmente.

Por último y para terminar solo nos queda otorgarle permiso de
ejecución al archivo creado de la siguiente manera.




Y ya nos va a quedar un archivo completo y funcional.

El desafío de acá en adelantes es “jugar” un poco más 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 métodos,
propiedades, etc.

Weitere ähnliche Inhalte

Was ist angesagt?

Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)josegonzalo130
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++itzjpb
 
Historia de c++
Historia de c++Historia de c++
Historia de c++edwin562
 
Historia de c++
Historia de c++Historia de c++
Historia de c++edwin562
 
Charla Mi Primer Robot 2.0
Charla Mi Primer Robot 2.0Charla Mi Primer Robot 2.0
Charla Mi Primer Robot 2.0Nicolás Pace
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusAbefo
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusGladys Arce
 
C++ y sus utilidades
C++ y sus utilidadesC++ y sus utilidades
C++ y sus utilidadesStudent A
 
Programa c++
Programa c++Programa c++
Programa c++ESPOCH
 
Fundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacionFundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacionGermán Sailema
 
Programa c++ y ejemplos
Programa c++ y ejemplosPrograma c++ y ejemplos
Programa c++ y ejemplosESPOCH
 
Aplicaciones de lenguaje c
Aplicaciones de lenguaje cAplicaciones de lenguaje c
Aplicaciones de lenguaje cmoncadalmz
 
Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Leslie Diaz
 
Lenguaje de programacion yesica cañaveral angel
Lenguaje de programacion  yesica cañaveral angelLenguaje de programacion  yesica cañaveral angel
Lenguaje de programacion yesica cañaveral angelOnce Redes
 

Was ist angesagt? (20)

Introduccion a Visual C Sharp
Introduccion a Visual C SharpIntroduccion a Visual C Sharp
Introduccion a Visual C Sharp
 
Zinjai
ZinjaiZinjai
Zinjai
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Historia de c++
Historia de c++Historia de c++
Historia de c++
 
Historia de c++
Historia de c++Historia de c++
Historia de c++
 
C++
C++C++
C++
 
Charla Mi Primer Robot 2.0
Charla Mi Primer Robot 2.0Charla Mi Primer Robot 2.0
Charla Mi Primer Robot 2.0
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplus
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplus
 
C++ y sus utilidades
C++ y sus utilidadesC++ y sus utilidades
C++ y sus utilidades
 
Programa c++
Programa c++Programa c++
Programa c++
 
Fundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacionFundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacion
 
Programa c++ y ejemplos
Programa c++ y ejemplosPrograma c++ y ejemplos
Programa c++ y ejemplos
 
Presentacion de c++
Presentacion de c++Presentacion de c++
Presentacion de c++
 
Aplicaciones de lenguaje c
Aplicaciones de lenguaje cAplicaciones de lenguaje c
Aplicaciones de lenguaje c
 
lengua c++
lengua c++lengua c++
lengua c++
 
Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Lenguaje de programacion yesica cañaveral angel
Lenguaje de programacion  yesica cañaveral angelLenguaje de programacion  yesica cañaveral angel
Lenguaje de programacion yesica cañaveral angel
 

Andere mochten auch

Python
PythonPython
Pythonkategj
 
Inmersión en Python 3.0.11
Inmersión en Python 3.0.11Inmersión en Python 3.0.11
Inmersión en Python 3.0.11Erik Gur
 
Python vs Java (NotBarraLibreCamp)
Python vs Java (NotBarraLibreCamp)Python vs Java (NotBarraLibreCamp)
Python vs Java (NotBarraLibreCamp)jjimenezlopez
 
Pintando gráficas con Python
Pintando gráficas con PythonPintando gráficas con Python
Pintando gráficas con PythonManuel Martín
 
Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))kikocorreoso
 
Aplicaciones de las ecuaciones diferenciales a problemas vaciado de tanques (...
Aplicaciones de las ecuaciones diferenciales a problemas vaciado de tanques (...Aplicaciones de las ecuaciones diferenciales a problemas vaciado de tanques (...
Aplicaciones de las ecuaciones diferenciales a problemas vaciado de tanques (...Yeina Pedroza
 

Andere mochten auch (12)

Python
PythonPython
Python
 
Primeros pasos en pyqt
Primeros pasos en pyqtPrimeros pasos en pyqt
Primeros pasos en pyqt
 
Inmersión en Python 3.0.11
Inmersión en Python 3.0.11Inmersión en Python 3.0.11
Inmersión en Python 3.0.11
 
Introducción a PyQt
Introducción a PyQtIntroducción a PyQt
Introducción a PyQt
 
Python vs Java (NotBarraLibreCamp)
Python vs Java (NotBarraLibreCamp)Python vs Java (NotBarraLibreCamp)
Python vs Java (NotBarraLibreCamp)
 
Flisol python
Flisol   pythonFlisol   python
Flisol python
 
Pintando gráficas con Python
Pintando gráficas con PythonPintando gráficas con Python
Pintando gráficas con Python
 
Gns3
Gns3Gns3
Gns3
 
cuaderno de practicas excel
cuaderno de practicas excelcuaderno de practicas excel
cuaderno de practicas excel
 
Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))
 
Presentando a Python
Presentando a PythonPresentando a Python
Presentando a Python
 
Aplicaciones de las ecuaciones diferenciales a problemas vaciado de tanques (...
Aplicaciones de las ecuaciones diferenciales a problemas vaciado de tanques (...Aplicaciones de las ecuaciones diferenciales a problemas vaciado de tanques (...
Aplicaciones de las ecuaciones diferenciales a problemas vaciado de tanques (...
 

Ähnlich wie Py Qt Desarrollando Aplicaciones De Escritorio El Co Di Go K

Ähnlich wie Py Qt Desarrollando Aplicaciones De Escritorio El Co Di Go K (20)

Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptx
 
Trabajo de programacion (visual basic)
Trabajo de programacion (visual basic)Trabajo de programacion (visual basic)
Trabajo de programacion (visual basic)
 
Fundamentos de visual basico por vicente sanchez
Fundamentos de visual basico por vicente sanchezFundamentos de visual basico por vicente sanchez
Fundamentos de visual basico por vicente sanchez
 
Fernando Espinoza
Fernando EspinozaFernando Espinoza
Fernando Espinoza
 
Apuntes vb6
Apuntes vb6Apuntes vb6
Apuntes vb6
 
Grupo 3 Vb, procedimientos, 1er programa
Grupo 3 Vb, procedimientos, 1er programaGrupo 3 Vb, procedimientos, 1er programa
Grupo 3 Vb, procedimientos, 1er programa
 
definiciones de c++ para el trabajo.docx
definiciones de c++ para el trabajo.docxdefiniciones de c++ para el trabajo.docx
definiciones de c++ para el trabajo.docx
 
Introducción al curso de C.docx
Introducción al curso de C.docxIntroducción al curso de C.docx
Introducción al curso de C.docx
 
Programación c++forcsma
Programación c++forcsmaProgramación c++forcsma
Programación c++forcsma
 
Manuel de Net beans
Manuel de Net beansManuel de Net beans
Manuel de Net beans
 
Visual Basic
Visual BasicVisual Basic
Visual Basic
 
Programación
ProgramaciónProgramación
Programación
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Fundamentos de Visual Basic
Fundamentos de Visual BasicFundamentos de Visual Basic
Fundamentos de Visual Basic
 
Gui section
Gui sectionGui section
Gui section
 
Trabajo
TrabajoTrabajo
Trabajo
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Tarea3
Tarea3 Tarea3
Tarea3
 
El lenguaje c#
El lenguaje c#El lenguaje c#
El lenguaje c#
 

Kürzlich hochgeladen

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Kürzlich hochgeladen (11)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Py Qt Desarrollando Aplicaciones De Escritorio El Co Di Go K

  • 1.
  • 2. Sobre este documento... Los contenidos de este documento están bajo la licencia Creative Commons Esta versión impresa se creo el 10 de Julio de 2008 y todavía esta incompleta, si deseas descargar la última versión puede informarte en http://www.elcodigok.com.ar Si deseas aportar sugerencias, comentarios, críticas o informar la presencia de errores puede hacerlo a danyx@elcodigok.com.ar Para más información les recomiendo que visiten mi blog El CoDiGo K http://www.elcodigok.com.ar y LaREPAWEB http://www.larepaweb.com.ar
  • 3. PyQT Desarrollando Aplicaciones de Escritorio Esta pequeña guía es el resultado de una recopilación 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 guía intenta ser un documento de referencia y de motivación para comenzar a trabajar y realizar interfaces de usuarios muy simples.
  • 4. INTRODUCCIÓN ¿Qué es Python? Python es un Lenguaje de Programación creado por Guido van Rossum en el año 1990, este personaje ya se los había presentado anteriormente en nuestra sección de Programadores. Es un lenguajes muy comparado con TCL, Perl, Scheme, Java y Ruby. En la actualidad Python se desarrolla como un proyecto de código abierto, administrado por la Python Software Foundation. La última versión estable del lenguaje es actualmente la 2.5.1 (18 de abril de 2007). Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica 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 intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. También es una calculadora muy útil. Características de Python En primer lugar les comento que Python es un Lenguaje de Programación 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 (Programación
  • 5. Orientada a Objetos), Programación Estructurada, Programación Funcional y la Programación orientada a Aspectos. Python utiliza tipado dinámico de datos (puede tomar una variable diferentes tipos de datos durante la ejecución del programa) y referencia counting para el manejo de memoria. Otra característica importante de Python es la resolución dinámica de nombres, lo que enlaza un método y un nombre de variable durante la ejecución del programa. Otro objetivo del diseño del lenguaje era la facilidad de extensión. Nuevos módulos se pueden escribir fácilmente en C o C++. Python puede utilizarse como un lenguaje de extensión para módulos y aplicaciones que necesitan de una interfaz programable. Aunque el diseño de Python es de alguna manera hostil a la programación funcional tradicional del Lisp, existen bastantes analogías entre Python y los lenguajes minimalistas de la familia del Lisp como puede ser Scheme. Las librerías QT QT es una biblioteca multiplataforma, creadas para desarrollar interfaces gráficas de usuarios. Fue creada por la compañía noruega Trolltech (una compañía de software fundada en el año 1994). Seguramente reconocerás a QT ya que el mismo utiliza el entorno gráfico KDE (K Desktop Environment) un entorno gráfico para los sistemas operativos GNU/Linux o FreeBSD entre otros. Es desarrollado con el lenguaje de programación C++ de forma nativa pero existen módulos para otros lenguajes de programación como ser C, Python (PyQT), Java (QT Jambi), Perl (PerlQT), Gambas (gb.qt), Ruby (QTRuby), PHP (PHP-QT), Mono (Qyoto), entre los más reconocidos. Es un librería totalmente Orientada a Objetos, es por ello que las API (Application Programming Interface) cuenta con diferentes métodos, soporta el uso de diferentes motores de Bases de Datos y el uso de archivos XML, además de otras estructuras de datos tradicionales. Estas librerías 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.
  • 6. 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.
  • 7. 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 programación 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 clásico 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
  • 8. interfaces de usuarios, formularios, Widget, etc, desarrollado para las librerías QT. KDevelopDesigner tiene una particularidad que realmente es muy interesante y es algo que debemos comprender bien, les comentaba que a través de esta herramienta vamos a poder desarrollar nuestros formularios, los mismos se van a almacenar como archivos de extensión .ui, estos archivos poseen un contenido al estilo XML pero que no corresponde para un lenguaje de programación en particular. Esto quiere decir que nosotros debemos transformar este archivo .ui a un archivo para nuestro lenguaje de programación, entonces estos formularios creados podemos utilizar tanto para C, C++, Python, Ruby, etc. Más adelante vamos a ver como realizar esta operación. 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.
  • 9. Como dijimos anteriormente en la parte central podemos apreciar el formulario que vamos desarrollando y agregándole 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 rápidamente 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, más adelante vamos a ver en detalle estas cosas. La siguiente imagen muestra todo lo descripto anteriormente. Rápidamente 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.
  • 10. 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 recomendaría 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 recomendaría que modifiquen a todos los objeto la propiedad name, ya que es muy importante y lo vamos a ver en la programación y interacción. Colocar nombre representativos por ejemplo a la Línea de Texto agregado yo le coloque LineaEdicion. Ahora agregamos dos botones, uno con el name BotonHola y
  • 11. 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 clásico botón 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.
  • 12. Ahora vamos a aplicar y relacionar algunas funciones a los botones relacionados, por ejemplo vamos a realizar una conexión, para ello nos dirigimos hasta el menú Edición y nos dirigimos a la opción Connections. En él vamos a podes seleccionar cual es el objeto que emite el mensaje, la señal con la cual se produce el evento, el objeto receptor de la señal y por último la función que se va a desencadenar. En el ejemplo vemos que la señal la emite el BotonSalir, a través de un clicked(), lo recibe el objeto formulario, y desencadena la función 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ú Edición, Slots. Alli se listarán todas las funciones, para crear una nueva vamos a New Function, y ahora creamos por ejemplo la función
  • 13. 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 función Saludar(), esto lo realizamos de la misma manera que el procedimiento anterior, nos dirigimos hasta el menú Edición, Connections, hay seleccionamos cual es el objeto de activación, bajo que evento, cual es el objeto que receptor y la función desencadenante, en este caso y como lo muestra el siguiente gráfico la función Saludar() Esto como verán nos va a ser más que útil para personalizar nuestras funciones y agregarle todas las funcionalidades. Hasta aquí podemos decir que ya tenemos completado el diseño de nuestro formulario que vamos a utilizar, con conexiones entre algunos
  • 14. objetos que desencadenan y activan algunas funciones a realizar. Ahora como les contaba anteriormente este formulario editado por KdevelopDesigner es general, y no específico para cada lenguaje de programación. 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 más que simple, yo les puedo hacer una recomendación, simplemente que al archivo que van a convertir pueden nombrarlo de la misma forma, no por alguna restricción en particular sino más bien por una cuestión que en proyectos grandes posiblemente sea mas complicado reconocerlo por la cantidad de archivos y perdamos tiempo. Si tenemos la posibilidad de ver el código fuente del nuevo archivo transformado, podemos observar que ahora esta escrito como clases dentro de Python como en la siguiente ilustración. Ahora les voy a hacer otra recomendación, al momento de programar, es bueno que lo
  • 15. podamos hacer bajo algún editor o IDE que nos encontremos cómodos 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 extensión .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 ilustración Y ahora procedemos a codificar lo que en el gráfico se encuentra documentado.
  • 16. Como podemos apreciar el código escrito no presenta tanta dificultad, primero cargamos los módulos y librerías qt, sys y más adelante importamos la clases que se encuentra en el archivo formulario. Definimos la función main(), instanciamos algunos objetos, convocamos al formulario, lo hacemos aparecer y por último controlamos el programa. Si bien con esta explicación no quiero enseñar a programar en Python pero si hacer referencia a la integración que podemos llegar a lograr con las librerías QT. Para poder ejecutar esta aplicación lo único que debemos hacer es acercarnos hasta una terminal y utilizar el intérprete de Python. De esta manera podemos observar que ya tenemos nuestro formulario controlado por Python. Ahora vamos a hacer uso nuevamente de la programación orientada a objeto y acá va otra recomendación para que tengan en cuenta. Al tener un archivo dependiente del archivo .ui sería una buena opción no operar con el mismo ya que si comenzamos a modificar el archivo pero resulta que después a nuestro formulario debemos agregarle un botón más, 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 teníamos serán 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 métodos y propiedades del formulario.
  • 17. De esta forma vemos como localmente estamos modificando el método saludar, personalizándolo 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 verán es recomendable tener algo de conocimientos de teoría de programación orientada a objetos y una base del lenguaje de programación Python. Entonces si ejecutamos la aplicación y pulsamos sobre el botón Hola Mundo!, vamos a ver que aparece en la Línea de Texto del formulario un mensaje Con lo cual podemos decir que esta pequeña aplicación esta siendo ejecutada correctamente y utilizando las librerías QT. Por último demos un repaso de los archivo que tenemos creado.
  • 18. 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 automáticamente 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 través de módulos a los anteriores y heredamos todos sus métodos para trabajarlos localmente. Por último y para terminar solo nos queda otorgarle permiso de ejecución al archivo creado de la siguiente manera. Y ya nos va a quedar un archivo completo y funcional. El desafío de acá en adelantes es “jugar” un poco más 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 métodos, propiedades, etc.