Frage

>>> 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' 

Ja, ich habe gelesen QString -Klassenreferenz

Warum kann ich nicht importieren? QString aus QtCore, wie in den Dokumenten angegeben?

War es hilfreich?

Lösung

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

Andere Tipps

In Python 3 wird Qstring standardmäßig der nativen Python -Zeichenfolge automatisch zugeordnet:

Die QString -Klasse wird als kartierter Typ implementiert, der automatisch in und von einer Python -Zeichenfolge konvertiert wird. Zusätzlich wird ein keine in einen Null -Qstring umgewandelt. Ein Null -Qstring wird jedoch in eine leere Python -Zeichenfolge (und nicht in keiner) umgewandelt. (Dies liegt daran, dass QT häufig einen Null -Qstring zurückgibt, wenn es wahrscheinlich einen leeren Qstring zurückgeben sollte.)

Die QCHAR- und QStringRef -Klassen werden als zugeordnete Typen implementiert, die automatisch in und von Python -Saiten konvertiert werden.

Die QStringlist -Klasse wird als kartierter Typ implementiert, der automatisch zu und nach Python -Listen von Strings konvertiert wird.

Die Klassen Qlatin1Char, Qlatin1String und QstringMatcher werden nicht implementiert.

http://pyqt.sourceforge.net/docs/pyqt4/qstring.html

Von PYQT4 4.6+ in Python3 qstring existiert nicht und Sie sollen gewöhnliche Python3 -Unicode -Objekte (String -Literale) verwenden. Um dies zu tun, damit Ihr Code sowohl in Python 2.x als auch in Python 3.x funktioniert, können Sie folgen:

try:
    from PyQt4.QtCore import QString
except ImportError:
    # we are using Python3 so QString is not defined
    QString = type("")

Abhängig von Ihrem Anwendungsfall können Sie mit diesem einfachen Hack davonkommen.

Es hängt von Ihrer Importanweisung ab.

Wenn Sie schreiben

from PyQt4 import QtGui, QtCore

Sie müssen QString mit nennen

yourstr = QtCore.QString('foo')

Ich denke, Sie haben Folgendes geschrieben:

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

Es wird nicht wirklich empfohlen, aber Sie sollten String mit:

yourstr = QString('foo')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top