如何在PyQt4中创建QString?

bet*_*sed 13 python user-interface pyqt

>>> 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' 
Run Code Online (Sandbox Code Playgroud)

是的,我读过QString Class Reference

为什么我不能导入QString来自QtCore,如文档指定?

Mar*_*ser 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类未实现.

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


Sta*_*tan 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("")
Run Code Online (Sandbox Code Playgroud)

根据您的使用情况,您可能会使用这个简单的黑客.


wRA*_*RAR 7

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

  • 来自PyQt4 import QtCore s = QtCore.QString('foo')AttributeError:'module'对象没有属性'QString'我在Py3.1中遇到此问题.但是在Py2.5它工作,奇怪...... (2认同)