Подтвердить что ты не робот

Как создать QString в PyQt4?

>>> 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, как указано в документах?

4b9b3361

Ответ 1

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

Ответ 2

В 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

Ответ 3

Из PyQt4 4.6+ в Python3 QString не существует, и вы должны использовать обычные объекты Unicode 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("")

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

Ответ 4

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

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

from PyQt4 import QtGui, QtCore

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

yourstr = QtCore.QString('foo')

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

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

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

yourstr = QString('foo')