Domanda

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

Sì, ho letto Riferimento classe QString

Perché non posso importare QString da QtCore , come specificato nei documenti?

È stato utile?

Soluzione

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

Altri suggerimenti

In Python 3, QString viene automaticamente mappato sulla stringa nativa di Python per impostazione predefinita:

  

La classe QString è implementata come un tipo mappato che viene automaticamente convertito in e da una stringa Python. Inoltre, Nessuno viene convertito in una QString nulla. Tuttavia, un QString null viene convertito in una stringa Python vuota (e non in None). (Questo perché Qt spesso restituisce un QString nullo quando probabilmente dovrebbe restituire un QString vuoto.)

     

Le classi QChar e QStringRef sono implementate come tipi mappati che vengono convertiti automaticamente da e verso le stringhe Python.

     

La classe QStringList è implementata come un tipo mappato che viene automaticamente convertito in e dagli elenchi di stringhe Python.

     

Le classi QLatin1Char, QLatin1String e QStringMatcher non sono implementate.

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

Da PyQt4 4.6+ in Python3 QString non esiste e si suppone che si utilizzino normali oggetti unicode Python3 (valori letterali di stringa). Per fare ciò in modo che il tuo codice funzioni sia in Python 2.x sia in Python 3.x puoi fare quanto segue:

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

A seconda del tuo caso d'uso potresti cavartela con questo semplice hack.

Dipende dalla tua dichiarazione di importazione.

Se scrivi

from PyQt4 import QtGui, QtCore

devi chiamare QString con

yourstr = QtCore.QString('foo')

Penso che tu abbia scritto questo:

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

Non è davvero raccomandato, ma dovresti chiamare String con:

yourstr = QString('foo')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top