Py
Py
cu)
Licenciado bajo GPL v3
Potenciado por GIMP y OpenOffice.org
Revisión 07012010
Para Windows o Mac podemos descargar el intérprete de Python desde w w w .python.org/dow nload/
y PyQt4 desde w w w .riverbankcom puting.co.uk/softw are/pyqt/dow nload, con esto es suficiente
para hacer todo lo que aquí se enseña.
¿Qué es Qt?
Qt es una framework multiplataforma para desarrollar interfaces gráficas de usuario. La
biblioteca la desarrolla la que fue su creadora, la compañía noruega Trolltech, actualmente
renombrada a Qt Software, y que desde junio de 2008 es propiedad de Nokia.
El API de la biblioteca cuenta con métodos para acceder a bases de datos mediante SQL, así
Desarrollar aplicaciones con PyQt4
como uso de XML y una multitud de otros para el manejo de ficheros, además de estructuras
de datos tradicionales.
Preparando el ambiente
Lo primero que hacemos en GNU/Linux para desarrollar aplicaciones con Python y Qt4 es
primero tener algún escritorio previamente instalado y entonces instalar [Ver Nota] los
paquetes
y para desinstalar:
sudo apt-get remove [--purge] <nombre-paquete1>[, <nombre-paquete2>[, ...]]
La opción --purge se escribe cuando deseamos que junto con la desinstalación del paquete se borren sus
Programación
archivos de configuración.
ͳ͵
Si deseamos documentación sobre la API de PyQt4 podemos instalar qt4-doc (esta ayuda se
ve con Qt Assistent), si deseamos ayuda en HTML instalamos qt4-doc-html el cual se instala
en /usr/share/doc/qt4-doc-html. Si lo deseemos podemos copiar la carpeta para conservar la
documentación y desinstalar el paquete.
Si deseamos soporte para SQL en PyQt4 instalamos python-qt4-sql y el driver SQL
correspondiente de Qt4:
libqt4-sql-mysql MySQL
libqt4-sql-odbc Microsoft SQL Server
libqt4-sql-psql PostgreSQL
libqt4-sql-sqlite SQLite3
libqt4-sql-sqlite2 SQLite2
Diseñemos la interfaz
Para ello primero abrimos Qt4-Designer, el cual se
encuentra en la categoría de aplicaciones de desarrollo.
Una vez abierto este lo primero que nos pregunta qué
tipo de ventana queremos crear. Seleccionamos Main
Desarrollar aplicaciones con PyQt4
1
2
Caja de widgets, donde se encuentran los componentes visuales más comunes.
Ventana de diseño, donde diseñamos la interfaz
ͳͶ
Para diseñar la interfaz arrastramos desde la caja de
widgest (1), los componentes LineEdit y dos PushButtons
hacia la ventana de diseño (2). Luego para poner el
WH[WR³ponga su texto aquí´HQHO LineEdit, marcamos este
componente y vamos al editor de propiedades (5) y
buscamos entre sus últimas opciones, que son las
específicas del componente seleccionado.
CambiamRV HO QRPEUH GH *R D ³SJ*R´ \ VX WH[WR D ³*R´ HO ERWyQ &HUUDU OH SRQHPRV
³SE&ORVH´\OHSRQHPRVHOWH[WRFRUUHVSRQGLHQWHFRPRPLVPRKLFLPRVFRQHO LineEdit.
Los slots
Qt nos permite hacer parte de la programación en el diseño de la interfaz gráfica, usando los
slots. Estos son señales que se pueden enviar los componentes de una ventana entre ellos.
Por ejemplo, cuando se haga clic en pbClose este ejecute el método close() de MainWindows, para
finalizar la ejecución del programa.
Esto lo realizamos de la siguiente forma, en el editor de slots (6 KDFHPRV FOLF HQ ³´ SDUD
DJUHJDU XQD QXHYR VORW OXHJR VHOHFFLRQDPRV HQ HO FRPER ³6HQGHU´ HO FRPSRQHQWH TXH
Desarrollar aplicaciones con PyQt4
En realidad lo que hace QtDesigner es crear un archivo XML, con la descripción de la interfaz
gráfica, pues a partir de este archivo se pude generar con diferentes herramientas en varios
lenguajes.
El resultado de esta acción es que nos muestra el código en Python de la ventana que
diseñamos en la consola; para crear un archivo con este código usamos el operador de flujo,
así que siempre debemos ejecutar:
$ pyuic4 MainWindow.ui > Ui_MainWindow.py
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
«
Como vemos el código de nuestro formulario es una clase, de la que luego heredaremos e
implementaremos los métodos que nos interesen.
ͳ
Este código importa de PyQt4 QtGui y la clase Ui_MainWindow del fichero que generamos
anteriormente. Luego viene la declaración de una clase MainWindow la que hereda de
QtGui.QMainWindow y de Ui_MainWindow. En su constructor podemos ver que se llama al constructor
padre de MainWindow y luego el método setupUi() que se encuentra definido en Ui_MainWindow, el
cual es el encargado de crear todos los widgets.
Nuestros eventos
Para hacer nuestros métodos, para los eventos que deseamos programar, estos se escriben
de la con el siguiente formato en la signatura:
def on_<nombreObjeto>_<señal>(self):
Por ejemplo para programar pbGo en su evento clicked() , para que el texto del LineEdit se
copie a su propiedad text. Lo hacemos de la siguiente forma, agregando este método en la
clase MainWindow:
def on_pbGo_clicked(self):
self.pbGo.setText(self.lineEdit.text())
De esta forma podemos programar cualquier otro evento, conociendo el nombre del objeto
involucrado y el nombre de la señal del evento. Para esto podemos consultar la
documentación de PyQt4.
import sys
from PyQt4 import QtGui
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
Para ejecutar esto le damos permisos de ejecución a main.py, y le hacemos doble clic.
ͳ