質問

>>> 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クラスリファレンス

を読みました

ドキュメントで指定されているように、 QtCore から QString をインポートできないのはなぜですか?

役に立ちましたか?

解決

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に変換されます。ただし、null QStringは空のPython文字列に変換されます(Noneではありません)。 (これは、Qtが空のQStringを返す可能性がある場合に、null QStringを返すことが多いためです。)

     

QCharクラスとQStringRefクラスは、Python文字列との間で自動的に変換されるマップ型として実装されます。

     

QStringListクラスは、Pythonの文字列リストとの間で自動的に変換されるマップ型として実装されます。

     

QLatin1Char、QLatin1String、およびQStringMatcherクラスは実装されていません。

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

Python3のPyQt4 4.6以降ではQStringは存在せず、通常の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("")

ユースケースによっては、この単純なハックで逃げることができます。

それはインポートステートメントに依存します。

書く場合

from PyQt4 import QtGui, QtCore

QStringを呼び出す必要があります

yourstr = QtCore.QString('foo')

これを書いたと思う:

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

これは実際には推奨されませんが、次のようにStringを呼び出す必要があります。

yourstr = QString('foo')
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top