Como criar QString no PYQT4?
-
05-07-2019 - |
Pergunta
>>> 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'
Sim, eu li QSTRING CLASSE REFERÊNCIA
Por que não posso importar QString
a partir de QtCore
, conforme especificado nos documentos?
Solução
In [1]: from PyQt4 import QtCore
In [2]: s = QtCore.QString('foo')
In [3]: s
Out[3]: PyQt4.QtCore.QString(u'foo')
Outras dicas
No Python 3, o QString é mapeado automaticamente para a string python nativa por padrão:
A classe QString é implementada como um tipo mapeado que é automaticamente convertido para e para uma string python. Além disso, um nenhum é convertido em um qString nulo. No entanto, um QString nulo é convertido em uma corda de python vazia (e não nenhuma). (Isso ocorre porque o QT geralmente retorna um QString nulo quando provavelmente deve retornar um QString vazio.)
As classes QChar e QStringRef são implementadas como tipos mapeados que são automaticamente convertidos para e para strings Python.
A classe QStringList é implementada como um tipo mapeado que é automaticamente convertido para e para listas de strings python.
As classes Qlatin1char, Qlatin1String e QStringMatcher não são implementadas.
Do PYQT4 4.6+ no Python3 QString não existe e você deve usar objetos comuns do Python3 Unicode (string literais). Para fazer isso para que seu código funcione no Python 2.x e no Python 3.x, você pode fazer o seguinte:
try:
from PyQt4.QtCore import QString
except ImportError:
# we are using Python3 so QString is not defined
QString = type("")
Dependendo do seu caso de uso, você pode se safar desse hack simples.
Depende da sua declaração de importação.
Se você escrever
from PyQt4 import QtGui, QtCore
você deve ligar para QString com
yourstr = QtCore.QString('foo')
Eu acho que você escreveu isso:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
Não é realmente recomendado, mas você deve ligar para a string com:
yourstr = QString('foo')