¿Cómo crear QString en PyQt4?
-
05-07-2019 - |
Pregunta
>>> from PyQt4 import QtCore
>>> str = QtCore.QString('Hello')
AttributeError: 'module' object has no attribute 'QString'
>>> QtCore.QString._init_(self)
AttributeError: 'module' object has no attribute 'QString'
Sí, he leído Referencia de clase QString
¿Por qué no puedo importar QString
desde QtCore
, como se especifica en los documentos?
Solución
In [1]: from PyQt4 import QtCore
In [2]: s = QtCore.QString('foo')
In [3]: s
Out[3]: PyQt4.QtCore.QString(u'foo')
Otros consejos
En Python 3, QString se asigna automáticamente a la cadena nativa de Python de forma predeterminada:
La clase QString se implementa como un tipo mapeado que se convierte automáticamente ay desde una cadena de Python. Además, ninguno se convierte en un QString nulo. Sin embargo, un QString nulo se convierte en una cadena de Python vacía (y no en ninguna). (Esto se debe a que Qt a menudo devuelve un QString nulo cuando probablemente debería devolver un QString vacío).
Las clases QChar y QStringRef se implementan como tipos asignados que se convierten automáticamente ay desde cadenas de Python.
La clase QStringList se implementa como un tipo mapeado que se convierte automáticamente ay desde las listas de cadenas de Python.
Las clases QLatin1Char, QLatin1String y QStringMatcher no están implementadas.
Desde PyQt4 4.6+ en Python3 QString no existe y se supone que debe usar objetos unicode de Python3 (literales de cadena). Para hacer esto para que su código funcione tanto en Python 2.x como en Python 3.x, puede hacer lo siguiente:
try:
from PyQt4.QtCore import QString
except ImportError:
# we are using Python3 so QString is not defined
QString = type("")
Dependiendo de su caso de uso, puede salirse con la suya con este simple truco.
Depende de su declaración de importación.
Si escribes
from PyQt4 import QtGui, QtCore
debe llamar a QString con
yourstr = QtCore.QString('foo')
Creo que has escrito esto:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
No se recomienda realmente, pero debe llamar a String con:
yourstr = QString('foo')