signal documentacion python pyqt qstring

python - documentacion - pyqt signal emit



¿Cómo puedo imprimir un QString que contenga un carácter especial con Python usando PyQt? (2)

Funciona para mí usando toUtf8() :

>>> s = u''éé'' >>> qs = QString(s) >>> qs PyQt4.QtCore.QString(u''/xe9/xe9'') >>> print qs Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: ''ascii'' codec can''t encode characters in position 0-1: ordinal not in range(128) >>> print qs.toUtf8() éé >>>

Sus datos internos deben ser Unicode, por lo que debe usar u''éé'' lugar de simplemente ''éé'' como indicó en su pregunta. Tu comentario incluso dice u''éé'' .

Actualización: Lo sentimos, pero no se puede garantizar que la impresión o str() en Unicode funcione en objetos Unicode a menos que use una codificación específica. Las secuencias de impresión aceptan matrices de bytes / cadenas de bytes, y str () en un objeto Unicode está intentando efectivamente convertir Unicode en una matriz de bytes / bytes. ¡No podrás evitar matrices de bytes!


No logré simplemente imprimir una variable QString que contenga un carácter especial.
Siempre obtengo un UnicodeEncodeError:

El códec ''ascii'' no puede codificar caracteres en posición ...

Aquí está el código que probé sin éxito:

var1 = "éé" #idem with u"éé" var2 = QString (var1) print var2 --->>> UnicodeEncodeError print str(var2) --->>> UnicodeEncoreError var3 = QString.fromLocal8Bit (var1) #idem with fromLatin1 and fromUtf8 print var3 --->>> UnicodeEncodeError codec = QTextCodec.codecForName ("UTF-8") #idem with ISO 8859-1 var4 = codec.toUnicode (var2.toUtf8().data()) #idem with toLatin1 instead of toUtf8 print var4 --->>> UnicodeEncodeError

También traté de usar:

QTextCodec.setCodecForCStrings(QTextCodec.codecForName("UTF-8"))

Realmente necesito imprimir una variable QString, no un QByteArray u otro objeto.


intente seguir:

  1. agregue # -*- coding: utf-8 -*- comentario mágico al comienzo de su script (detalles aquí )
  2. usa declaración de cadena "u" con tu constante de cadena

a continuación hay un ejemplo que funciona para mí

# -*- coding: utf-8 -*- from PyQt4 import QtCore var1 = u"éé" #idem with u"éé" print var1 var2 = QtCore.QString(var1) print var2 var3 = QtCore.QString(u"éé") print var3

devoluciones:

éé

éé

éé

espero que esto ayude, saludos