wx.ListCtrl - Einträge bekommen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hallo.
Ich habe ein Wx.ListCtrl.

Wie bekomme ich jetzt alle Einträge in irgendeiner Form von Sequenz? Ich hab leider keine GetValues()-Methode oder etwas ähnliches gefunden. Wäre froh wenn mir jemand helfen könnte.

Gruß sprudel
hmueller
User
Beiträge: 39
Registriert: Montag 27. November 2006, 16:07
Wohnort: Linz, Oberösterreich

Hallo sprudel,

Ich habe das bei mir so gelöst:

Code: Alles auswählen

list = []
        index = listctrl.GetNextItem(-1)
        while index != -1:
            list.append(listctrl.GetItemText(index))
            index = listctrl.GetNextItem(index)
Hoffe das hilft,

Hannes
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hallo. Dieser Code ist im Prinzip schonmal sehr gut. Jetzt hab ich nur noch das Problem: Wie bekomm ich die anderen Spalten auch noch?

Ich hätte es am besten gerne so, dass für jede zeile eine Sequenz entsteht, und jeder dieser Einträge den Text eines Feldes enthält. Von Links nach rechts. Ist das denn auch möglich?
hmueller
User
Beiträge: 39
Registriert: Montag 27. November 2006, 16:07
Wohnort: Linz, Oberösterreich

Naja, du kannst über den index das Ding zeilenweise durchgehen, und dann eine Datenstruktur aufbauen, die deinen Anforderungen genügt.

Mehr als diesen Iterator kann ich Dir leider nicht bieten...
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Wie kann ich überhaupt in weitere Felder schreiben?
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

sprudel hat geschrieben:Wie kann ich überhaupt in weitere Felder schreiben?
Das ListCtrl ist so eine Sache für sich, nicht gerade, wie soll ich sagen, intuitiv.

Um weitere hinzuzufügen (hier in der ersten reihe):

Code: Alles auswählen

l.InsertStringItem(0, "datacol0") # index 0 = 1. reihe
l.SetStringItem(0,1, "datacol1")#index 0, spalte 1
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

und wie soll ich sie dann wieder auslesen?
sagen wir, eine sequenz pro zeile :P

Und wie sortiere ich dieses verfluche ListCtrl eigentlich? Will die erste Spalte Aufsteigend sortiert haben. :roll: . Und ich dachte immer in den WxWidgets wäre alles so intuitiv ;-)
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

sprudel hat geschrieben:und wie soll ich sie dann wieder auslesen?
sagen wir, eine sequenz pro zeile :P

Und wie sortiere ich dieses verfluche ListCtrl eigentlich? Will die erste Spalte Aufsteigend sortiert haben. :roll: . Und ich dachte immer in den WxWidgets wäre alles so intuitiv ;-)
Hast du dir das ListCtrl Demo angesehen?
Da ist glaube ich alles drin, was du suchst.
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hi,

Irgendwie kapier ich das nicht so recht. Ich schaff es immer nur die linke Spalte zu bekommen.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

sprudel hat geschrieben:Hi,

Irgendwie kapier ich das nicht so recht. Ich schaff es immer nur die linke Spalte zu bekommen.
in einem drPython Plugin habe ich dafür eine Funktion:

Code: Alles auswählen

def getColumnText(self, index, col):
    item = self.GetItem(index, col)
    return item.GetText()
Antworten