Question

>>> 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' 

Oui, j'ai lu Référence de la classe QString

Pourquoi ne puis-je pas importer QString à partir de QtCore , comme spécifié dans la documentation?

Était-ce utile?

La solution

In [1]: from PyQt4 import QtCore
In [2]: s = QtCore.QString('foo')
In [3]: s
Out[3]: PyQt4.QtCore.QString(u'foo')

Autres conseils

En Python 3, QString est automatiquement mappé sur la chaîne Python native par défaut:

  

La classe QString est implémentée en tant que type mappé qui est automatiquement converti en chaîne Python. De plus, aucun est converti en une chaîne QString nulle. Cependant, une chaîne QString nulle est convertie en une chaîne Python vide (et non aucune). (C’est parce que Qt renvoie souvent une chaîne QString nulle alors qu’il devrait probablement renvoyer une chaîne QString vide.)

     

Les classes QChar et QStringRef sont implémentées en tant que types mappés qui sont automatiquement convertis vers et à partir de chaînes Python.

     

La classe QStringList est implémentée en tant que type mappé qui est automatiquement converti vers et à partir des listes de chaînes Python.

     

Les classes QLatin1Char, QLatin1String et QStringMatcher ne sont pas implémentées.

http://pyqt.sourceforge.net/Docs/PyQt4/qstring.html

D'après PyQt4 4.6+ en Python3, QString n'existe pas et vous êtes censé utiliser des objets Unicode Python3 ordinaires (littéraux de chaîne). Pour ce faire, afin que votre code fonctionne à la fois dans Python 2.x ET Python 3.x, vous pouvez effectuer les opérations suivantes:

try:
    from PyQt4.QtCore import QString
except ImportError:
    # we are using Python3 so QString is not defined
    QString = type("")

En fonction de votre cas d'utilisation, vous pourriez vous en tirer avec ce simple piratage.

Cela dépend de votre déclaration d'importation.

Si vous écrivez

from PyQt4 import QtGui, QtCore

vous devez appeler QString avec

yourstr = QtCore.QString('foo')

Je pense que vous avez écrit ceci:

from PyQt4.QtGui import *
from PyQt4.QtCore import *

Ce n'est pas vraiment recommandé, mais vous devriez appeler String avec:

yourstr = QString('foo')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top