web-dev-qa-db-ja.com

PyQt4でQStringを作成する方法は?

>>> 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をインポートできないのはなぜですか?

13
beta-closed
In [1]: from PyQt4 import QtCore
In [2]: s = QtCore.QString('foo')
In [3]: s
Out[3]: PyQt4.QtCore.QString(u'foo')
7
wRAR

Python 3では、QStringはデフォルトでネイティブPython文字列に自動的にマップされます:

QStringクラスは、Python文字列との間で自動的に変換されるマップ型として実装されます。さらに、Noneはnull QStringに変換されます。ただし、nullQStringは空に変換されます。 Python文字列(Noneではない)。(これは、Qtがおそらく空のQStringを返す必要があるときに、nullのQStringを返すことが多いためです。)

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

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

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

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

16
Mark Visser

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("")

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

15
Stan

インポートステートメントによって異なります。

あなたが書くなら

from PyQt4 import QtGui, QtCore

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

yourstr = QtCore.QString('foo')

私はあなたがこれを書いたと思います:

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

あまりお勧めしませんが、Stringを:で呼び出す必要があります。

yourstr = QString('foo')
1
Sopra