>>> 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はnull QStringに変換されます。ただし、nullQStringは空に変換されます。 Python文字列(Noneではない)。(これは、Qtがおそらく空のQStringを返す必要があるときに、nullのQStringを返すことが多いためです。)
QCharクラスとQStringRefクラスは、Python文字列との間で自動的に変換されるマップ型として実装されます。
QStringListクラスは、文字列のPythonリストとの間で自動的に変換されるマップ型として実装されます。
QLatin1Char、QLatin1String、およびQStringMatcherクラスは実装されていません。
Python3のPyQt44.6以降からQStringは存在せず、通常のPython3ユニコードオブジェクト(文字列リテラル)を使用することになっています。これを行うと、コードがPython 2.x AND 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')