PyQt es una interfaz Python del kit de herramientas GUI multiplataforma Qt , implementada como un complemento de Python . PyQt es software libre desarrollado por la empresa británica Riverbank Computing. Está disponible bajo términos similares a las versiones de Qt anteriores a la 4.5; esto significa una variedad de licencias, incluyendo la Licencia Pública General de GNU (GPL) y la licencia comercial, pero no la Licencia Pública General Reducida de GNU (LGPL). [ 3 ] PyQt es compatible con Microsoft Windows , así como con varios tipos de UNIX , incluyendo Linux y macOS . [ 4 ]
PyQt implementa alrededor de 440 clases y más de 6000 funciones y métodos [ 5 ], entre los que se incluyen:
- un conjunto sustancial de widgets de interfaz gráfica de usuario
- clases para acceder a bases de datos SQL ( ODBC , MySQL , PostgreSQL , Oracle , SQLite ) [ 6 ]
- QScintilla, widget de editor de texto enriquecido basado en Scintilla
- Widgets que manejan datos y se rellenan automáticamente desde una base de datos.
- un analizador XML
- Compatibilidad con SVG
- clases para incrustar controles ActiveX en Windows (solo en la versión comercial) [ 7 ]
Para generar automáticamente estas vinculaciones, Phil Thompson desarrolló la herramienta SIP , que también se utiliza en otros proyectos.
Historia
PyQt fue lanzado por primera vez por Riverbank Computing en 1998. [ 8 ]
En agosto de 2009, Nokia solicitó que la interfaz de Python estuviera disponible bajo la licencia LGPL . En ese momento, Nokia era propietaria de Qt Software , el desarrollador de QT. Tras no lograr un acuerdo con Riverbank Computing, Nokia lanzó su propia interfaz, PySide , que ofrecía una funcionalidad similar. [ 9 ]
Componentes principales

PyQt4 contiene los siguientes módulos de Python.
- El módulo QtCore contiene las clases principales que no son de interfaz gráfica de usuario (GUI), incluyendo el bucle de eventos y el mecanismo de señales y ranuras de Qt. También incluye abstracciones independientes de la plataforma para Unicode , subprocesos, archivos mapeados, memoria compartida , expresiones regulares y configuraciones de usuario y de la aplicación.
- El módulo QtGui contiene la mayoría de las clases de interfaz gráfica de usuario (GUI). Estas incluyen varias clases de tablas, árboles y listas basadas en el patrón de diseño modelo-vista-controlador (MVC) . También se proporciona un sofisticado widget de lienzo 2D capaz de almacenar miles de elementos, incluidos widgets comunes.
- El módulo QtNetwork contiene clases para escribir clientes y servidores UDP y TCP . Incluye clases que implementan clientes FTP y HTTP y admiten consultas DNS . Los eventos de red están integrados en el bucle de eventos, lo que facilita enormemente el desarrollo de aplicaciones en red.
- El módulo QtOpenGL contiene clases que permiten el uso de OpenGL para la representación de gráficos 3D en aplicaciones PyQt.
- El módulo QtSql contiene clases que se integran con bases de datos SQL de código abierto y propietarias. Incluye modelos de datos editables para tablas de bases de datos que se pueden usar con clases de interfaz gráfica de usuario (GUI). También incluye una implementación de SQLite .
- El módulo QtSvg contiene clases para mostrar el contenido de archivos SVG. Es compatible con las funciones estáticas de SVG 1.2 Tiny.
- El módulo QtXml implementa las interfaces SAX y DOM para el analizador XML de Qt.
- El módulo QtMultimedia implementa funcionalidades multimedia de bajo nivel. Los desarrolladores de aplicaciones normalmente usarían el módulo phonon .
- El módulo QtDesigner contiene clases que permiten extender Qt Designer utilizando PyQt.
- El módulo Qt consolida las clases de todos los módulos descritos anteriormente en un único módulo. Esto tiene la ventaja de que no es necesario preocuparse por qué módulo subyacente contiene una clase en particular. La desventaja es que carga todo el framework Qt, lo que aumenta el consumo de memoria de la aplicación. El uso de este módulo consolidado o de los módulos individuales depende de las preferencias personales.
- El módulo uic implementa soporte para el manejo de archivos XML creados por Qt Designer que describen la totalidad o parte de una interfaz gráfica de usuario. Incluye clases que cargan un archivo XML y lo renderizan directamente, y clases que generan código Python a partir de un archivo XML para su posterior ejecución. [ 10 ]
PyQt5 contiene los siguientes módulos de Python:
- QtQml
- QtQuick
- QtCore
- QtGui
- Soporte para QtPrint
- QtWidgets
- QGLContext
- Formato QGL
- QGLWidget
- QtWebKit
- Widgets de QtWebKit
Versiones
PyQt versión 4 funciona con Qt 4 y Qt 5. PyQt versión 5 solo admite Qt versión 5, [ 4 ] y deja de admitir características que están obsoletas en Qt 5. [ 11 ]
Ejemplo de "Hola Mundo"

El siguiente código, escrito para PyQt6, muestra una pequeña ventana en la pantalla.
#!/usr/bin/env python3"""Aquí proporcionamos las importaciones necesarias.Los widgets básicos de la interfaz gráfica de usuario se encuentran en el módulo QtWidgets."""importar sysfrom PyQt6.QtWidgets import QApplication , QWidget# Cada aplicación PyQt debe crear un objeto de aplicación.# El objeto de la aplicación se encuentra en el módulo QtWidgets.aplicación = QAplicación ([])# El widget QWidget es la clase base de todos los objetos de interfaz de usuario en PyQt.# Proporcionamos el constructor predeterminado para QWidget. El constructor predeterminado no tiene padre.# Un widget sin padre se llama ventana.raíz = QWidget ()raíz.resize ( 320 , 240 ) # El método resize() cambia el tamaño del widget .raíz.setWindowTitle ( " ¡ Hola, mundo!" ) # Aquí establecemos el título de nuestra ventana.raíz.show ( ) # El método show() muestra el widget en la pantalla .sys.exit ( app.exec ( )) # Finalmente, entramos en el bucle principal de la aplicación .Aplicaciones destacadas que utilizan PyQt
- Anki , un programa de tarjetas de memoria con repetición espaciada
- Calibre , una aplicación para la gestión de libros electrónicos
- Dropbox , un servicio de alojamiento de archivos
- EarQuiz Frequencies , una aplicación gratuita y de código abierto para el entrenamiento auditivo de ecualización/frecuencia.
- Cartera Bitcoin Electrum
- IDE de Python Eric
- Frescobaldi , un editor de partituras para archivos de música de LilyPond.
- Kodos, un depurador de expresiones regulares de Python
- Leo , un creador de esquemas y editor de programación literaria
- OpenLP , un programa de proyección de letras de canciones de código abierto.
- OpenShot , un programa de edición de vídeo.
- Orange , un marco de minería y visualización de datos
- Puddletag , un editor de etiquetas ID3 de código abierto y multiplataforma.
- QGIS , una aplicación de escritorio gratuita de Sistemas de Información Geográfica (SIG).
- qutebrowser , un navegador web con combinaciones de teclas al estilo Vim y una interfaz gráfica de usuario mínima.
- qt-recordMyDesktop , una interfaz Qt4 para recordMyDesktop
- Spyder , un IDE de ciencia de datos en Python
- TortoiseHg , una interfaz gráfica para el programa de gestión de fuentes de mercurio (Hg).
- Veusz , una aplicación de gráficos científicos
- GNS3 , un emulador de software de red
Véase también
Referencias
- ↑ https://riverbankcomputing.com/news/PyQt_v6.9.1_Released .
{{cite web}}: Falta o está vacío|title=( ayuda ) - ↑ "Descarga de PyQt4" . Riverbankcomputing. 2010. Consultado el 19 de abril de 2010 .
- ↑ "Riverbank | Comercial | Preguntas frecuentes sobre licencias" . Riverbankcomputing.com . Consultado el 24 de junio de 2015 .
- 1 2 "¿Qué es PyQt?" . Riverbank Computing . Consultado el 18 de septiembre de 2014 .
- ↑ "PyQt v4 - Enlaces de Python para Qt v4" . Riverbankcomputing. Archivado del original el 29 de abril de 2008. Consultado el 17 de abril de 2010 .
- ↑ "Referencia de la clase QSqlDatabase" . Pyqt.sourceforge.net . Consultado el 25 de septiembre de 2014 .
- ↑ Wiki de PythonInfo
- ↑ Jarmul, Katharine; Lawson, Richard (30 de mayo de 2017). Python Web Scraping . Packt Publishing Ltd. pág. 105. ISBN 978-1-78646-429-3.
- ↑ Preguntas frecuentes, Martin Fitzpatrick Última actualización (21/06/2019). "PyQt5 vs PySide2: ¿Cuál es la diferencia entre las dos bibliotecas Qt de Python?" . Interfaces gráficas de usuario de Python . Consultado el 25/06/2022 .
{{cite web}}:|first=tiene nombre genérico ( ayuda ) - ↑ "Riverbank | Software | PyQt | ¿Qué es PyQt?" . Riverbankcomputing.co.uk . Consultado el 15 de abril de 2010 .
- ↑ "Diferencias entre PyQt4 y PyQt5" , Guía de referencia de PyQt 5.3.2 , archivado del original el 14/08/2018 , consultado el 18/09/2014.
Lecturas adicionales
- Willman, Joshua (2020), Introducción a PyQt: un enfoque práctico para la programación de interfaces gráficas de usuario (1.ª ed.), Apress , pág. 440, ISBN 978-1-4842-5856-9
- Summerfield, Mark (28 de octubre de 2007), Programación rápida de interfaces gráficas de usuario con Python y Qt (incluye PyQt4) (1.ª ed.), Prentice Hall , pág. 648, ISBN 978-0-13-235418-9
- Rempt, Boudewijn (2002), Programación de interfaces gráficas de usuario con Python: Edición QT (incluye PyQt3) , OpenDocs, archivado del original el 9 de abril de 2010.
Enlaces externos
- Sitio web oficial
- Wiki de la comunidad de PyQt y PyKDE
- Serie de tutoriales de PyQt6
- Serie de tutoriales de PyQt5
- Serie de tutoriales de PyQT4
- Tutoriales
- Tutorial
- Software libre multiplataforma
- Bibliotecas informáticas gratuitas
- Software libre programado en C++
- Software libre programado en Python
- Bibliotecas de Python (lenguaje de programación)
- Qt (software)
- Kits de herramientas de widgets
- Software que utiliza la Licencia Pública General de GNU.