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

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

13 голосов
/ 09 сентября 2009
>>> 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, как указано в документации?

Ответы [ 4 ]

16 голосов
/ 08 апреля 2010

В 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

15 голосов
/ 21 октября 2010

Начиная с 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("")

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

7 голосов
/ 09 сентября 2009
In [1]: from PyQt4 import QtCore
In [2]: s = QtCore.QString('foo')
In [3]: s
Out[3]: PyQt4.QtCore.QString(u'foo')
1 голос
/ 28 сентября 2009

Зависит от вашего заявления на импорт.

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

from PyQt4 import QtGui, QtCore

вы должны вызвать QString с

yourstr = QtCore.QString('foo')

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

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

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

yourstr = QString('foo')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...