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文字列との間で自動的に変換されるマップ型として実装されます。さらに、NoneはnullQStringに変換されます。ただし、nullのQStringは空のPython文字列に変換されます(Noneではありません)。(これは、Qtがおそらく空のQStringを返す必要があるときに、nullのQStringを返すことが多いためです。)

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

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

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

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

于 2010-04-07T20:04:01.063 に答える
17

Python3のPyQt44.6以降からQStringは存在せず、通常のPython3ユニコードオブジェクト(文字列リテラル)を使用することになっています。コードがPython2.xとPython3.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 に答える