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

4 回答 4

18

在 Python 3 中,QString 默认自动映射到原生 Python 字符串:

QString 类被实现为一个映射类型,该类型自动转换为 Python 字符串和从 Python 字符串转换而来。此外,一个 None 被转换为一个 null QString。然而,一个空的 QString 被转换为一个空的 Python 字符串(而不是无)。(这是因为当 Qt 应该返回一个空的 QString 时,它经常返回一个空的 QString。)

QChar 和 QStringRef 类被实现为映射类型,可以自动转换为 Python 字符串和从 Python 字符串转换。

QStringList 类被实现为一个映射类型,它可以自动与 Python 字符串列表相互转换。

QLatin1Char、QLatin1String 和 QStringMatcher 类未实现。

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

于 2010-04-07T20:04:01.063 回答
17

从 Python3 中的 PyQt4 4.6+ 开始,QString 不存在,您应该使用普通的 Python3 unicode 对象(字符串文字)。为此,您的代码可以在 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("")

根据您的用例,您可能会逃脱这个简单的黑客攻击。

于 2010-10-20T22:14:36.987 回答
9
In [1]: from PyQt4 import QtCore
In [2]: s = QtCore.QString('foo')
In [3]: s
Out[3]: PyQt4.QtCore.QString(u'foo')
于 2009-09-09T17:06:04.867 回答
2

这取决于您的导入声明。

如果你写

from PyQt4 import QtGui, QtCore

你必须调用 QString

yourstr = QtCore.QString('foo')

我想你已经写了这个:

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

这不是真的推荐,但你应该调用 String :

yourstr = QString('foo')
于 2009-09-28T06:12:06.530 回答