Seite 1 von 1
Ersatz für QString in Python3
Verfasst: Freitag 13. März 2015, 21:45
von nieselfriem
Hallo!
Ich versuche mich in QT mit PyQT. Dazu habe ich ein nettes Tutorial auf youtube gefunden. Dieses scheint auf Python 2.7 aufzubauen. Dort findet noch der DatenTyp QString und QStringList Verwendung. Nun weiß ich nicht, wie ich folgenden Codeschnipsel ersetzen soll da es den QString Datenyp nicht mehr gibt
Code: Alles auswählen
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
return QtCore.QString("Palette") #QString gibt es nicht
else:
return QtCore.QString("Color %1").arg(section) #QString gibt es nicht
Es wird davon gesprochen, dass man normale Strings verwenden soll aber das hat mit meinen kläglichen versuchen nicht funktioniert.
Wie kann ersetzt man QString nun richtig?
VG niesel
Re: Ersatz fürQString in Python3
Verfasst: Freitag 13. März 2015, 22:57
von BlackJack
@nieselfriem: Man verwendet normale Zeichenketten. Das funktioniert auch schon in Python 2.x da `unicode` oder `str` Werte zu verwenden, also müsstest Du etwas konkreter werden was genau nicht funktioniert.
Re: Ersatz fürQString in Python3
Verfasst: Samstag 14. März 2015, 08:07
von nieselfriem
Nun ja, ich will nach nach diesem Tutorial und der oben angegebenen Methode den Header einer Tabelle und die Spaltenbezeichnung einfügen. Mach ich es so wie in dem Tutorial angebenden kommt die Fehlermeldung, dass QString nicht existiert. Verwende ich z.B. einfach nur ein
oder
passiert eben gar nichts. Das heißt der Tabellenheader wird nicht geändert in "Blub".
VG niesel
Re: Ersatz fürQString in Python3
Verfasst: Samstag 14. März 2015, 08:34
von EyDu
Dann wird es wohl an dem Code liegen, welcher den Header setzt. Wie sieht der denn aus?
Re: Ersatz fürQString in Python3
Verfasst: Samstag 14. März 2015, 12:59
von nieselfriem
Das ist der Code der den Header setzt. Es ist ja eine Methode in einem Listenmodel
Code: Alles auswählen
class PaletteListModel(QtCore.QAbstractListModel):
def __init__(self, colors = [], parent = None):
QtCore.QAbstractListModel.__init__(self, parent)
self.__colors = colors
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
return QtCore.QString("Palette")
else:
return QtCore.QString("Color %1").arg(section)
def rowCount(self, parent):
return len(self.__colors)
def data(self, index, role):
if role == QtCore.Qt.EditRole:
return self.__colors[index.row()].name()
if role == QtCore.Qt.ToolTipRole:
return "Hex code: " + self.__colors[index.row()].name()
if role == QtCore.Qt.DecorationRole:
row = index.row()
value = self.__colors[row]
pixmap = QtGui.QPixmap(26, 26)
pixmap.fill(value)
icon = QtGui.QIcon(pixmap)
return icon
if role == QtCore.Qt.DisplayRole:
row = index.row()
value = self.__colors[row]
return value.name()
Das ist die gesamte Klasse. Das beispiel ist unter dem Link herunter zu laden:
https://www.youtube.com/redirect?q=http ... I2MzMzODYy
VG niesel
Re: Ersatz fürQString in Python3
Verfasst: Samstag 14. März 2015, 13:11
von BlackJack
@nieselfriem: Gibt es in der Konsole denn irgendwelche Fehlermeldungen? Wird die Methode überhaupt aufgerufen?
Re: Ersatz fürQString in Python3
Verfasst: Samstag 14. März 2015, 13:19
von EmaNymton
Also der von dir verlinkte Quelltext funktioniert mit der folgenden Änderung bei mir wunderbar:
Code: Alles auswählen
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
return "Meine Palette"
else:
return "Farbe {}".format(section)
Re: Ersatz fürQString in Python3
Verfasst: Samstag 14. März 2015, 14:37
von nieselfriem
Ich habs mal unter Windows probiert (Arbeitsrechner

) Da gehts mit dem original Quelltext und einfach nur Strings. Ich guck noch mal in Ruhe "mein" Gesamtwerk auf meinem Linuxrechner durch, wenn ich zu Hause bin.
Danke erst einmal für eure Mühe
Re: Ersatz für QString in Python3
Verfasst: Mittwoch 18. März 2015, 14:02
von jerch
@nieselfriem:
Für Python 2.x Kompatibilität könntest Du eine Importweiche nutzen und weiterhin mit QString arbeiten:
Code: Alles auswählen
try:
from PyQt4.QtCore import QString
except ImportError:
QString = str