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?

Foi útil?

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.

http://pyqt.sourceforge.net/docs/pyqt4/qstring.html

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')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top