Seite 1 von 1

PyQt 4 QListWidget

Verfasst: Freitag 28. Mai 2010, 08:38
von outoftune
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.

Re: PyQt 4 QListWidget

Verfasst: Freitag 28. Mai 2010, 10:15
von snafu
So wie es aussieht, geht es aber nicht anders. Und so dramatisch finde ich das nun auch nicht:

Code: Alles auswählen

items = (listwidget.item(i) for i in xrange(listwidget.count()))
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.

Re: PyQt 4 QListWidget

Verfasst: Freitag 28. Mai 2010, 13:02
von Hyperion
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:
Was bedeutet "anzeigen"? Darunter kann ich mir nichts passendes vorstellen. Angezeigt werden die doch automatisch durch das ListWidget!?!

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.

Re: PyQt 4 QListWidget

Verfasst: Samstag 29. Mai 2010, 11:02
von outoftune
snafu hat geschrieben:

Code: Alles auswählen

items = (listwidget.item(i) for i in xrange(listwidget.count()))
Deine Variante ist ein wenig eleganter. Danke.
Hyperion hat geschrieben:Ich persönlich halte aber sowieso gerne einen Namen im Objekt an das Model gebunden und komme damit selten in diese Verlegenheit.
Das verstehe ich leider nicht :(

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.

Re: PyQt 4 QListWidget

Verfasst: Samstag 29. Mai 2010, 13:41
von DaMutz
Ich verwende die QListWidget Klasse folgendermassen:

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)
Das QListWidget agiert nur als Container. Jedes Item das du dem Widget hinzufügst wird auch angezeigt.

Re: PyQt 4 QListWidget

Verfasst: Sonntag 20. Juni 2010, 23:15
von derdon
In den Zeilen 2 und 3 ist das String-Formatting teilweise überflüssig. str(…) bietet sich da doch eher an, wenn man schon ein str Objekt erzwingen möchte.

Re: PyQt 4 QListWidget

Verfasst: Montag 21. Juni 2010, 19:28
von DaMutz
vielen Dank, da hast du natürlich Recht. Keine Ahnung warum ich das nicht weggelassen habe :K .