Как создать QString в PyQt4?
-
05-07-2019 - |
Вопрос
>>> 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 не реализованы.
Начиная с 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')