PyQt es un Python obligatorio de la multiplataforma GUI toolkit Qt , implementado como un Python plug-in . PyQt es un software gratuito desarrollado por la empresa británica Riverbank Computing. Está disponible en términos similares a las versiones Qt anteriores a la 4.5; esto significa una variedad de licencias que incluyen la Licencia Pública General GNU (GPL) y la licencia comercial, pero no la Licencia Pública General Reducida GNU (LGPL). [3] PyQt es compatible con Microsoft Windows , así como con varios tipos de UNIX , incluidos Linux yMacOS (o Darwin) . [4]
Desarrollador (es) | Computación Riverbank |
---|---|
Lanzamiento estable | 5.15.4 / 10 de marzo de 2021 [1] |
Escrito en | C ++ / Python [2] |
Sistema operativo | Multiplataforma |
Licencia | GNU GPL y comercial |
Sitio web | riverbankcomputing.com |
PyQt implementa alrededor de 440 clases y más de 6,000 funciones y métodos [5] que incluyen:
- un conjunto sustancial de widgets GUI
- 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 con reconocimiento de datos que se completan automáticamente desde una base de datos
- un analizador XML
- Soporte SVG
- clases para incrustar controles ActiveX en Windows (solo en la versión comercial) [7]
Para generar automáticamente estos enlaces, Phil Thompson desarrolló la herramienta SIP , que también se utiliza en otros proyectos.
En agosto de 2009, Nokia , los entonces propietarios del kit de herramientas Qt, lanzaron PySide , que proporciona una funcionalidad similar, pero bajo la LGPL , [8] después de no poder llegar a un acuerdo con Riverbank Computing [9] para cambiar sus términos de licencia para incluir LGPL como una licencia alternativa.
Componentes principales de PyQt
PyQt4 contiene los siguientes módulos de Python.
- El módulo QtCore contiene las clases principales no GUI, incluido el bucle de eventos y el mecanismo de señal y ranura de Qt. También incluye abstracciones independientes de la plataforma para Unicode , subprocesos, archivos mapeados, memoria compartida, expresiones regulares y configuraciones de usuarios y aplicaciones.
- El módulo QtGui contiene la mayoría de las clases de GUI. Estos incluyen una serie de clases de tabla, árbol y lista basadas en el patrón de diseño modelo-vista-controlador . También se proporciona un sofisticado widget de lienzo 2D capaz de almacenar miles de elementos, incluidos los widgets normales.
- El módulo QtNetwork contiene clases para escribir clientes y servidores UDP y TCP . Incluye clases que implementan clientes FTP y HTTP y admiten búsquedas de DNS . Los eventos de red están integrados con el bucle de eventos, lo que facilita el desarrollo de aplicaciones en red.
- El módulo QtOpenGL contiene clases que permiten el uso de OpenGL en la representación de gráficos 3D en aplicaciones PyQt.
- El módulo QtSql contiene clases que se integran con bases de datos SQL patentadas y de código abierto. Incluye modelos de datos editables para tablas de bases de datos que se pueden usar con clases de GUI. También incluye una implementación de SQLite .
- El módulo QtSvg contiene clases para mostrar el contenido de los archivos SVG. Es compatible con las funciones estáticas de SVG 1.2 Tiny.
- El módulo QtXml implementa interfaces SAX y DOM para el analizador XML de Qt.
- El módulo QtMultimedia implementa una funcionalidad 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 usando PyQt.
- El módulo Qt consolida las clases contenidas en todos los módulos descritos anteriormente en un solo módulo. Esto tiene la ventaja de que no tiene que preocuparse por qué módulo subyacente contiene una clase en particular. Tiene la desventaja de que carga todo el marco Qt, lo que aumenta la huella de memoria de una aplicación. Si utiliza este módulo consolidado o los módulos de componentes individuales depende de su gusto personal.
- El módulo uic implementa soporte para manejar los 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:
- Módulo QtQml
- Módulo QtQtuick
- Módulo QtCore
- Módulo QtGui
- Módulo de soporte QtPrint
- Módulo QtWidgets
- Módulo QGLContext
- Módulo QGLFormat
- Módulo QGLWidget
- Módulo QtWebKit
- Módulo QtWebKitWidgets
Versiones
La versión 4 de PyQt funciona con Qt 4 y Qt 5 . La versión 5 de PyQt solo es compatible con la versión 5, [4] de Qt y deja de ser compatible con las funciones que están obsoletas en Qt 5. [11]
Ejemplo de Hello World
El siguiente código muestra una pequeña ventana en la pantalla.
PyQt4
#! / usr / bin / env python3# Codificación de caracteres: UTF-8## Aquí proporcionamos las importaciones necesarias.# Los widgets básicos de la GUI se encuentran en el módulo QtGui. importar sysdesde PyQt4.QtGui importar QApplication , QWidget# Cada aplicación PyQt4 debe crear un objeto de aplicación.# El objeto de la aplicación se encuentra en el módulo QtGui.aplicación = QApplication ( sys . argv )# El widget QWidget es la clase base de todos los objetos de la interfaz de usuario en PyQt4.# 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, ingresamos al mainloop de la aplicación.
PyQt5
#! / usr / bin / env python3# Codificación de caracteres: UTF-8## Aquí proporcionamos las importaciones necesarias.# Los widgets básicos de la GUI se encuentran en el módulo QtWidgets. importar sysdesde PyQt5.QtWidgets importar QApplication , QWidget# Cada aplicación PyQt5 debe crear un objeto de aplicación.# El objeto de la aplicación se encuentra en el módulo QtWidgets.aplicación = QApplication ( sys . argv )# El widget QWidget es la clase base de todos los objetos de la interfaz de usuario en PyQt5.# 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, ingresamos al mainloop de la aplicación.
Aplicaciones notables que usan PyQt
- Anki , un programa de flashcard de repetición espaciada
- Calibre , una aplicación de gestión de libros electrónicos
- Dropbox , un servicio de alojamiento de archivos
- Eric Python IDE
- fman , un administrador de archivos multiplataforma
- Frescobaldi , un editor de partituras para archivos de música de LilyPond
- Kodos , un depurador de expresiones regulares de Python
- Leo , un editor de programación experto y delineador
- Ninja-IDE , un IDE de Python extensible de código abierto
- OpenLP , un programa de proyección de letras de código abierto
- OpenShot , un programa de edición de video
- Orange , un marco de visualización y minería de datos
- Puddletag , un editor de etiquetas ID3 multiplataforma de código abierto
- QGIS , una aplicación de sistemas de información geográfica (GIS) de escritorio de software gratuito
- qt-recordMyDesktop , una interfaz Qt4 para recordMyDesktop
- Spyder , un IDE de ciencia de datos de Python
- TortoiseHg , una interfaz gráfica para el programa de gestión de fuentes Mercurial (Hg)
- Veusz , una aplicación de trazado científico
Ver también
PyQt es una de las opciones de Python para la programación de GUI. Las alternativas populares son PySide (el enlace Qt con soporte oficial y una licencia más liberal), PyGTK , wxPython , Kivy y Tkinter (que se incluye con Python).
Referencias
- ^ https://pypi.org/project/PyQt5/#history
- ^ "Descargar PyQt4" . Riverbankcomputing. 2010 . Consultado el 19 de abril de 2010 .
- ^ "Riverbank | Comercial | Licencia FAQ" . Riverbankcomputing.com . Consultado el 24 de junio de 2015 .
- ^ a b "¿Qué es PyQt?" . Computación Riverbank . Consultado el 18 de septiembre de 2014 .
- ^ "PyQt v4 - Enlaces de Python para Qt v4" . Riverbankcomputing. Archivado desde el original el 29 de abril de 2008 . Consultado el 17 de abril de 2010 .
- ^ "Referencia de clase QSqlDatabase" . Pyqt.sourceforge.net . Consultado el 25 de septiembre de 2014 .
- ^ Wiki de PythonInfo
- ^ "Se ha lanzado PySide - PySide - Python para Qt" . Pyside.org. 2009-08-18. Archivado desde el original el 25 de octubre de 2009 . Consultado el 3 de septiembre de 2009 .
- ^ "Preguntas frecuentes - PySide - Python para Qt" . Pyside.org . Consultado el 3 de septiembre de 2009 .
- ^ "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
Otras lecturas
- Willman, Joshua (2020), Beginning PyQt - A Hands-on Approach to GUI Programming (1ra ed.), Apress , p. 440, ISBN 978-1-4842-5856-9
- Summerfield, Mark (28 de octubre de 2007), Programación rápida de GUI con Python y Qt (Covers PyQt4) (1ª ed.), Prentice Hall , p. 648, ISBN 978-0-13-235418-9
- Rempt, Boudewijn (2002), Programación GUI con Python: QT Edition (cubre PyQt3) , OpenDocs, archivado desde el original el 2010-04-09
enlaces externos
- Página web oficial
- Wiki de la comunidad PyQt y PyKDE
- Serie de tutoriales de PyQt5
- Serie de tutoriales de PyQT4
- Tutoriales
- Tutorial