Para generar automáticamente estos enlaces, 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 el enlace de Python estuviera disponible bajo la licencia LGPL . En ese momento, Nokia era propietaria de Qt Software , el desarrollador de QT. Después de no llegar a un acuerdo con Riverbank Computing, Nokia lanzó su enlace, PySide , que proporciona 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, incluido 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 aplicación.
El módulo QtGui contiene la mayoría de las clases de la interfaz gráfica de usuario. Entre ellas se incluyen varias clases de tablas, árboles y listas 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 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 búsquedas DNS . Los eventos de red están integrados con 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 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 de código abierto y de propiedad exclusiva. 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 visualizar el contenido de archivos SVG. Admite 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 funciones multimedia de bajo nivel. Los desarrolladores de aplicaciones normalmente utilizarían el módulo phonon .
El módulo QtDesigner contiene clases que permiten ampliar Qt Designer utilizando 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 el uso de memoria de una aplicación. El uso de este módulo consolidado o de los módulos de componentes individuales depende del 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 QtPrintSupport
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 tanto con Qt 4 como con Qt 5. La versión 5 de PyQt solo es compatible con la versión 5 de Qt [4] y deja de admitir funciones 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 GUI básicos se encuentran en el módulo QtWidgets."""importar sistemadesde PyQt6.QtWidgets importar QApplication , QWidget# Cada aplicación PyQt debe crear un objeto de aplicación.# El objeto de aplicación se encuentra en el módulo QtWidgets.aplicación = QApplication ([])# El widget QWidget es la clase base de todos los objetos de la 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 ()root . resize ( 320 , 240 ) # El método resize() cambia el tamaño del widget.root . setWindowTitle ( "¡Hola, mundo!" ) # Aquí establecemos el título de nuestra ventana.root . show () # El método show() muestra el widget en la pantalla.sys . exit ( app . exec ()) # Finalmente, ingresamos al bucle principal de la aplicación.
Aplicaciones destacadas que utilizan PyQt
Anki , un programa de tarjetas didácticas de repetición espaciada
Calibre , una aplicación de gestión de libros electrónicos
^ "Descarga de PyQt4". Riverbankcomputing. 2010. Consultado el 19 de abril de 2010 .
^ "Riverbank | Commercial | License FAQ" (Preguntas frecuentes sobre licencias comerciales de Riverbank) Riverbankcomputing.com . Consultado el 24 de junio de 2015 .
^ ab "¿Qué es PyQt?". Riverbank Computing . 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
^ Jarmul, Katharine; Lawson, Richard (30 de mayo de 2017). Web Scraping con Python. Packt Publishing Ltd. pág. 105. ISBN978-1-78646-429-3.
^ preguntas frecuentes, Martin Fitzpatrick Última actualización (2019-06-21). "PyQt5 vs PySide2: ¿Cuál es la diferencia entre las dos bibliotecas Qt de Python?". GUI de Python . Consultado el 25 de junio de 2022 .
^ "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 desde el original el 14 de agosto de 2018 , consultado el 18 de septiembre de 2014
Lectura adicional
Willman, Joshua (2020), Introducción a PyQt: un enfoque práctico para la programación de GUI (1.ª ed.), Apress , pág. 440, ISBN 978-1-4842-5856-9
Summerfield, Mark (28 de octubre de 2007), Rapid GUI Programming with Python and Qt (Cubre PyQt4) (1.ª ed.), Prentice Hall , pág. 648, ISBN 978-0-13-235418-9
Rempt, Boudewijn (2002), Programación de GUI con Python: Edición QT (incluye PyQt3), OpenDocs, archivado desde el original el 9 de abril de 2010