>>> 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 Class Reference
为什么我无法从QString
导入QtCore
,如文档中所指定的那样?
答案 0 :(得分:16)
在Python 3中,默认情况下,QString会自动映射到本机Python字符串:
QString类是作为映射类型实现的,它自动转换为Python字符串和从Python字符串转换。另外,None被转换为null QString。但是,null QString将转换为空的Python字符串(而不是None)。 (这是因为当它应该返回一个空的QString时,Qt经常会返回一个空的QString。)
QChar和QStringRef类实现为自动转换为Python字符串和从Python字符串转换的映射类型。
QStringList类是作为一个映射类型实现的,它自动转换为Python的字符串列表。
QLatin1Char,QLatin1String和QStringMatcher类未实现。
答案 1 :(得分:15)
来自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("")
根据您的使用情况,您可能会放弃这个简单的黑客攻击。
答案 2 :(得分:7)
In [1]: from PyQt4 import QtCore
In [2]: s = QtCore.QString('foo')
In [3]: s
Out[3]: PyQt4.QtCore.QString(u'foo')
答案 3 :(得分:1)
这取决于您的导入声明。
如果你写
from PyQt4 import QtGui, QtCore
你必须用
调用QStringyourstr = QtCore.QString('foo')
我想你已写过:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
这不是真的推荐,但你应该用:
调用Stringyourstr = QString('foo')