PyQt

PyQt
Información sobre la plantilla
Parte de la familia Qt
Pyqt.jpg
Conjunto de enlaces Python para el conjunto de herramientas Qt
Sistemas Operativos compatiblesGNU/Linux, Windows, Mac OS

PyQt es un conjunto de enlaces Python para el conjunto de herramientas Qt y está disponible para todas las plataformas soportadas por Qt, incluyendo Windows, Linux, UNIX, Mac OS / X y sistemas embebidos, tales como el Sharp Zaurus y el iPAQ de Compaq. Se han probado en las versiones de Qt 1.43 a 3.3.4, Qt no-comerciales, Qtopia 1.5.0 y las versiones de Python 1.5 a la versión 2.4.1. Qt / Embedded v3 no se admite. V4 Qt todavía no es posible.

PyQt está disponible bajo la licencia GPL para su uso con la versión GPL de Qt, la licencia aa comerciales para su uso con la versión comercial de Qt, una licencia no comercial para su uso con la versión no comercial de Qt v2, y una licencia para la educación de el uso de la versión educativa de Qt.

También hay una versión de evaluación de PyQt para Windows.Esto se debe utilizar con la versión de evaluación correspondiente de Qt.

PyQt es construido usando SIP (una herramienta para la generación de módulos de Python extensión de C ++ bibliotecas de clases). SIP v4.2 o posterior debe estar instalado con el fin de crear y ejecutar esta versión de PyQt.

PyQt para MacOS / X requiere Qt v3.1.0 o posterior y Python v2.3 o posterior.

Los enlaces se implementan como una serie de módulos de Python

  • qt es el módulo principal y contiene las clases principales y la mayoría de los widgets de la interfaz de usuario.
  • qtaxcontainer contiene un sub-conjunto de las clases implementadas en QAxContainer Qt módulo, que forma parte del marco de Qt ActiveQt. (Tenga en cuenta que el SIP v4.2 o posterior.)
  • qtcanvas contiene las clases implementadas en el módulo de lona de Qt.
  • qtgl contiene las clases implementadas en el módulo de Qt OpenGL.
  • QtNetwork contiene las clases implementadas en el módulo de red de Qt.
  • qtpe contiene las clases implementadas en Qtopia (originalmente llamado el entorno Qt Palmtop). Que sólo es compatible con Qt / Embedded.
  • qtsql contiene las clases implementadas en el módulo de Qt SQL.
  • qttable contiene las clases implementadas en el módulo de la tabla de Qt.
  • qtui contiene las clases implementadas en la biblioteca Qt qui.Estos permiten a los GUIs se pueden crear directamente desde Qt Designer archivos. Ui.
  • qtxml contiene las clases implementadas en el módulo de Qt XML.
  • qtext contiene útiles clases de terceros que no forman parte de Qt. En el momento en que contiene enlaces para QScintilla, el puerto de Qt de la clase de editor del programador de Scintilla.
  • PyQt también incluye las utilidades y pyuic pylupdate que corresponden a la UIC Qt y utilidades LUPDATE. pyuic convierte los diseños de interfaz gráfica de usuario creados con Qt Designer a código ejecutable Python. pylupdate escanea el código Python, los extractos de todas las cadenas que son candidatos para la internacionalización, y crea un archivo XML para el uso de Qt Linguist.

Cambios

Los cambios visibles para el programador de Python en este comunicado son los siguientes.

  • Esta versión requiere SIP v4.3 (o posterior).
  • Añadido registerWeakActiveObject () y revokeActiveObject () para QAxBase.
  • Añadido el QString falta operador +.
  • Clases de apoyo PyQt ahora recolector de basura cíclico de Python.
  • QDialog (y sub-clases) los casos ya transferir la propiedad del cuadro de diálogo de Python en la llamada a exec_loop (). Esto significa que los recursos del diálogo son liberados cuando la envoltura de Python es basura recogida sin necesidad de llamarQObject.deleteLater ().
  • Conversión automática de tipos más específicos de sub-clasesdisponibles con información en tiempo real el tipo se ha mejorado para que, si una subclase no se reconoce entonces lamayoría de los subgrupos específicos de clase se utiliza en lugar de la clase base.
  • Conversión automática de tipos de QLayoutItem y sub-clases ha sido añadido.
  • Añadido soporte para QScintilla v1.6 incluyendo elQextScintillaLexerBatch, QextScintillaLexerCSS,QextScintillaLexerDiff, QextScintillaLexerMakefile,QextScintillaLexerPOV y clases QextScintillaLexerProperties.

Otros extras PyQt

Utilizando Qt Designer

Qt Designer es un editor gráfico GPL diseño proporcionado porTrolltech, como parte de Qt. Que genera una descripción XML de un diseño de interfaz gráfica de usuario. Qt incluye la UIC, que genera código C + + a partir de que XML.

PyQt incluye pyuic que genera código Python desde el mismoXML. El código de Python es autónomo y puede ser ejecutadode inmediato.

A veces es útil tener la posibilidad de incluir algún código específico de Python en la salida generada por pyuic. Por ejemplo, si usted está usando widgets personalizados, pyuic no tiene manera de saber el nombre del módulo de Python que contiene el flash y por lo tanto no pueden generar la declaración de importación necesarios. Para ayudar a solucionar este problema, pyuic va a extraer las líneas entraron en el campo Comentario del formulario Qt Designer de diálogo deConfiguración que comienzan con Python, y los copia en la salida generada.

Cosas que ser conscientes de

Clases super y envuelto

Internamente PyQt implementa una técnica de perezosos debúsqueda de atributos donde los atributos sólo se colocan en los diccionarios tipo y ejemplo, cuando se hace referencia primero.Esta técnica es necesaria para reducir el tiempo necesario parala importación de módulos de gran tamaño como PyQt.

En la mayoría de las circunstancias de esta técnica es transparente para una aplicación. La excepción es cuando se usa súper con una clase de PyQt. La forma en que actualmente está siendo implementado súper significa que la búsquedaperezoso se pasa por alto que resulta en excepcionesAttributeError menos que el atributo ha sido previamentereferenciados.

Tenga en cuenta que esta restricción se aplica a cualquier claseenvueltos por la SIP, y no sólo PyQt.

Python Cuerdas, Cuerdas Qt y Unicode

Soporte Unicode se añadió en la versión 2.0 de Qt y de Pythonen v1.6. En Qt, el soporte Unicode se implementa con la claseQString. Es importante entender que QStrings, objetos Python de cuerdas y objetos Python Unicode son todos diferentes, pero las conversiones entre ellas son automáticas en muchos casos yfácil de conseguir de forma manual cuando sea necesario.

Cada vez que PyQt espera un QString como un argumento de función, un objeto de cadena o un objeto de Python PythonUnicode se puede proporcionar en su lugar, y PyQt hará la conversión necesaria de forma automática.

Usted también puede convertir manualmente cadena de Python y los objetos de Unicode para QStrings utilizando el constructorQString como se demuestra en el siguiente fragmento de código.

*QS1 = QString ("Construcción objeto de cadena de Python)
*QS2 = QString (u'Converted Python objeto Unicode)

Con el fin de convertir un QString a un objeto de cadena de Python utilizan la str de Python () función. La aplicación de str () para un valor nulo QString y un QString vacío tanto dar lugar a un objeto cadena vacía Python.

Con el fin de convertir un QString a un objeto de Python Unicodeutilizar el unicode de Python () función. La aplicación de unicode() con un valor NULL QString y un QString vacío tanto dar lugar a un vacío de objetos Python Unicode.

Módulo de documentación de referencia

En las secciones siguientes se debe utilizar en conjunción con ladocumentación de la clase normal sólo las diferencias específicas de los enlaces de Python se describen aquí.

En estas secciones, no ha implementado todavía implica que la función se puede implementar fácilmente si es necesario. No se han aplicado implica que la función no se ejecutará, ya sea porque no se puede o porque no es la adecuada.

Si una clase se describe como su cabal cumplimiento, todas lasfunciones que no son miembros privados y todas las variables de clase pública se han aplicado.

Si un operador ha puesto en práctica, entonces se diceexplícitamente.

Las clases que no son mencionados aún no han sido implementadas.

Funciones miembro estáticas

Funciones miembro estáticas se implementan como funciones de clase Python. Por ejemplo, el C + + miembro estáticaQObject:: connect () es llamada desde Python comoQObject.connect () o self.connect () si se llama desde una subclase de QObject.

Los tipos enumerados

Los tipos enumerados se implementan como un conjunto devariables simples correspondientes a los valores enumeradospor separado.

Cuando se utiliza un valor enumerado el nombre de la clase (osubclase) en el que se definió el tipo enumeradas en el que se incluirán. Por ejemplo:

*Qt.SolidPattern
*QWidget.TabFocus
*QFrame.TabFocus

Fuente

Enlaces externos