Вопрос

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

Да, я прочитал описание класса QString

Почему я не могу импортировать QString из QtCore , как указано в документации?

Это было полезно?

Решение

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

Другие советы

В Python 3 QString автоматически сопоставляется с собственной строкой Python по умолчанию:

  

Класс QString реализован как отображенный тип, который автоматически преобразуется в строку Python и из нее. Кроме того, None преобразуется в нулевую строку QString. Однако нулевая строка QString преобразуется в пустую строку Python (а не в None). (Это потому, что Qt часто возвращает пустое значение QString, когда оно, вероятно, должно возвращать пустое значение QString.)

     

Классы QChar и QStringRef реализованы как отображенные типы, которые автоматически преобразуются в строки Python и из них.

     

Класс QStringList реализован как отображенный тип, который автоматически преобразуется в и из списков строк Python.

     

Классы QLatin1Char, QLatin1String и QStringMatcher не реализованы.

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

Начиная с PyQt4 4.6+ в Python3, QString не существует, и вы должны использовать обычные юникодные объекты Python3 (строковые литералы). Чтобы сделать так, чтобы ваш код работал как в Python 2.x, так и в Python 3.x, вы можете сделать следующее:

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

В зависимости от вашего варианта использования вам может понадобиться этот простой взлом.

Это зависит от вашего оператора импорта.

Если вы напишите

from PyQt4 import QtGui, QtCore

вы должны вызвать QString с помощью

yourstr = QtCore.QString('foo')

Я думаю, что вы написали это

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

Это не очень рекомендуется, но вы должны вызывать String с помощью:

yourstr = QString('foo')
scroll top