Hallo Zusammen,
ich habe eine kurze Frage. Ich verwende in einer GUI das QListWidget. Jetzt finde ich auf der riverbank Seite in den Docs zwar alle Methoden, die das Widget hat - nur leider keine um mir die List Items anzeigen zu lassen:
http://www.riverbankcomputing.co.uk/sta ... idget.html
Ich konnte das Problem umgehen, indem ich anhand der listengroesse die items per index und Schleife durchgegangen bin. Aber wenn ich bei alltaeglichen Sachen, also bei einer Liste den Inhalt auslesen, schon aussen rum scripten muss, mache ich meistens was falsch.
Es gibt zwar ne Methode:
list-of-QListWidgetItem items (self, QMimeData)
nur hab ich keine Ahnung was ich da uebergeben muss, um die zu rufen.
Freu mich ueber jeden Hinweis.
Vielen Dank.
PyQt 4 QListWidget
So wie es aussieht, geht es aber nicht anders. Und so dramatisch finde ich das nun auch nicht:
Bedenke, dass PyQt ein Wrapper ist, der eben nicht alles mögliche selbst dazu implementiert. Für `count()` könnte man ja in Python auch besser ein `@property` nehmen, was ebenfalls nicht getan wird.
Code: Alles auswählen
items = (listwidget.item(i) for i in xrange(listwidget.count()))
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Was bedeutet "anzeigen"? Darunter kann ich mir nichts passendes vorstellen. Angezeigt werden die doch automatisch durch das ListWidget!?!outoftune hat geschrieben:Jetzt finde ich auf der riverbank Seite in den Docs zwar alle Methoden, die das Widget hat - nur leider keine um mir die List Items anzeigen zu lassen:
Oder meinst Du wirklich, dass Du Dir die kompletten Einträge zurückliefern lassen möchtest?
Prinzipiell verwende ich seit einiger Zeit nur noch die "Q*Views", da diese model-based sind. Dort könntest Du Dir tatsächlich das model aus dem View "zurückholen". Ich persönlich halte aber sowieso gerne einen Namen im Objekt an das Model gebunden und komme damit selten in diese Verlegenheit.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Deine Variante ist ein wenig eleganter. Danke.snafu hat geschrieben:Code: Alles auswählen
items = (listwidget.item(i) for i in xrange(listwidget.count()))
Das verstehe ich leider nichtHyperion hat geschrieben:Ich persönlich halte aber sowieso gerne einen Namen im Objekt an das Model gebunden und komme damit selten in diese Verlegenheit.

Bin noch absolut gruen hinter den Ohren was Python und/oder PyQt angeht. Hab bisher GUI Sachen immer direkt in meiner 3D Software selbst gemacht und muss mich erst noch an das was man in der echten Welt so macht erst noch gewoehnen.
Merci vielmals fuer die Rueckmeldung.
Ich verwende die QListWidget Klasse folgendermassen:
Das QListWidget agiert nur als Container. Jedes Item das du dem Widget hinzufügst wird auch angezeigt.
Code: Alles auswählen
for e, level in sorted(currentEvents):
label = QtGui.QListWidgetItem('%s' % (self.string_db.get_string('STR_EVENT_%d' % e)))
label.setTextColor(QtGui.QColor('%s' % self.get_color(level)))
if i % 2:
label.setBackgroundColor(QtGui.QColor('#dddddd'))
i += 1
self.listWidget.addItem(label)