Auf der Suche Hilfen bei der Anwendung des wx.ListCtrls bin auf folgenden wrapper gestoßen:
ObjectListView, zu finden unter http://objectlistview.sourceforge.net/python/index.html
Er scheint mir viel sprechend in seinen Anwendungsmöglichkeiten zu sein und vor allem leicht zu handhaben.
Leider ist die Dokumentation aufs äußerst Wesentliche schränkt. Daher die Frage, ob jemand in diesem Forum bereits Erfahrungen mit ObjectListView gesammelt hat.
In meinem speziellen Fall gelingt es mir nicht, in Tuples/Listen importierte Daten einer Datenbank (SQlite) in das ListCtrl einzulesen. Das ListCtrl selbst wird problemlos angezeigt.
ElSids
ObjectListView -> wx.ListCtrl-wrapper
-
- User
- Beiträge: 155
- Registriert: Freitag 29. Dezember 2006, 18:27
Hallo,
ich finde dieses Beispiel recht gut zu verstehen - hast du vielleicht keine Objektlisten, sondern irgendwas anderes angelegt? Zeig doch einfach mal ein bisschen Code
Gruß Fred
ich finde dieses Beispiel recht gut zu verstehen - hast du vielleicht keine Objektlisten, sondern irgendwas anderes angelegt? Zeig doch einfach mal ein bisschen Code

Gruß Fred
Hallo Fred,
ich habe leider erst jetzt bemerkt, dass jemand auf meine Frage geantwortet hat.
Mein Problem ist nicht ein Frame mit einem ObjectListView zu erstellen, sondern das ListView mit Werten zu füttern.
Die Werte selbst stammen aus einer SQL-Abfrage und liegen als eine Liste mit Tuples (Records) vor.
Beispiel:
Ich denke nicht, dass es sich hierbei um das, was du "Objektlisten" nennst, handelt. Wie wandele ich nun diese Tuple-Liste in eine Objektliste um. Sagen wir mal ich hätte 2000 jener records aus obigem Beispiel
Bei den Beispielen auf der Homepage sind, zumindest für mich, eine Reihe von objecten angegeben, die unerklärt einfach da sind
ElSids
ich habe leider erst jetzt bemerkt, dass jemand auf meine Frage geantwortet hat.
Mein Problem ist nicht ein Frame mit einem ObjectListView zu erstellen, sondern das ListView mit Werten zu füttern.
Die Werte selbst stammen aus einer SQL-Abfrage und liegen als eine Liste mit Tuples (Records) vor.
Beispiel:
Code: Alles auswählen
[(1, "Franz", "Kaiser", 1960-10-23, 500.23), (2, "Helga", "Meier", 1956-01-03, 250.50)]
Bei den Beispielen auf der Homepage sind, zumindest für mich, eine Reihe von objecten angegeben, die unerklärt einfach da sind
Womöglich habe ich es übersehen, aber wo ist ExampleModel.py einzusehen?Code: Alles auswählen
self.songs = ExampleModel.GetTracks()
ElSids
-
- User
- Beiträge: 11
- Registriert: Mittwoch 26. März 2008, 12:35
Du musst eine Klasse bilden und eine Funktion die deine Liste in Instanzen deiner Klasse verwandelt und in einer liste ablegt
also zum Beispiel ist aus dem kopf ungetestet also keine ahnung obs sofort klappt:
also zum Beispiel ist aus dem kopf ungetestet also keine ahnung obs sofort klappt:
Code: Alles auswählen
class Record(object):
""" a class for my records
"""
def __init__(self, id, fname, lname, date, zahl):
self.id = id
self.fname = fname
#usw.
def list2objectlist(list):
""" Creates a List of objects
"""
objectlist = []
for id, fname, lname, date, zahl in list:
objectlist.append(Record(id,fname,lname,date,zahl))
return objectlist
objectlist = list2objectlist(list)
Vielen Dank für den Tip. Mittlerweile hatte ich es selber herausgefunden.
Meine Lösung sieht folgendermaßen aus:
Die Classe (Beispiel):
Umwandlung in Classenliste:
Das 'self' steht hier für ein wx.Frame mit einem
ObjectViewList 'self.OVL'
Füllen des ObjectListView mit:
Natürlich fehlen hier alle sonstigen Programmschritte.
Im Übrigen kann ich diesen ListCtrl-Wrapper allen nur wärmstens empfehlen. Sortieren, Gruppieren, Auslesen und Ändern von Einträgen sind wirklich erstaunlich einfach.
Frage ist: Wie kennzeichne ich diesen threat als gelöst [solved]?
Nochmals danke
ElSids
Meine Lösung sieht folgendermaßen aus:
Die Classe (Beispiel):
Code: Alles auswählen
class Person(object):
def __init__(self, name, vorname, alter, #usw.):
self.name = name
self.vorname = vorname
self.alter = alter
#usw.
Das 'self' steht hier für ein wx.Frame mit einem
ObjectViewList 'self.OVL'
Code: Alles auswählen
def InitModel(self):
self.mylist = []
tpl_risult = #sql-Abfrage aus einer Datenbank
for item in tpl_risult:
self.mylist.append(Fattura(item[0],item[1], item[2], #usw.))
Füllen des ObjectListView mit:
Code: Alles auswählen
self.OLV.SetObjects(self.mylist)
Im Übrigen kann ich diesen ListCtrl-Wrapper allen nur wärmstens empfehlen. Sortieren, Gruppieren, Auslesen und Ändern von Einträgen sind wirklich erstaunlich einfach.
Frage ist: Wie kennzeichne ich diesen threat als gelöst [solved]?
Nochmals danke
ElSids