wxListCtrl einträge hinzufügen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

wxListCtrl einträge hinzufügen

Beitrag von The Hit-Man » 01.06.2010 19:09:15

also ich stehe echt auf dem schlauch. ich habe in wxpython ein wxListCtrl und möchte dort nun einträge hinzufügen. hab nen paar mal gegoogelt, und auch lösungen gefunden, aber die funktionieren leider nicht. mein code, sieht so aus:

Code: Alles auswählen

        mywxshowliste = wxshowliste (None, -1, "")
        # daten zum listfeld hinzufügen
        for i in range(4):
			mywxshowliste.list_ctrl_betrag.InsertColumn(i,"Column"+str(i))
			mywxshowliste.list_ctrl_betrag.SetStringItem(i,1,"Hi")
			mywxshowliste.list_ctrl_betrag.SetStringItem(i,2,"there")
			mywxshowliste.list_ctrl_betrag.SetItemData(i,1)
			print i
        mywxshowliste.Show ()
hier sollten dann eigentlich einträge hinzugefügt werden, aber bei mir werden NUR die überschriftfelder angelegt und keine einträge ins listcontrol.
hat jemand von euch ne ahnung, warum das bei mir nicht geht? im netz stoße ich immer auf die gleichen lösungen.
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

kolja
Beiträge: 4
Registriert: 08.06.2010 20:20:10

Re: wxListCtrl einträge hinzufügen

Beitrag von kolja » 09.06.2010 11:19:22

Ich kann aus dem Code nicht erkennen, was Du eigentlich vorhast, aber so wie er ist macht er keinen Sinn, da Du <i> wechselweise als Spalten- und Zeilen-Index benutzt.

Einmal übergibst Du <i> an InsertColumn(), welches lediglich neue Spalten definiert, aber keine Einträge erzeugt. Hier sollte <i> die Position der neuen Spalte angeben.

Dann übergibst Du <i> an diverse Set*Item*(), die dafür gedacht sind, bestehende Einträge zu aktualisieren. Hier sollte <i> der Index eines existierenden Eintrags sein. Um Einträge zu erzeugen, musst Du InsertItem() benutzen. Einträge erstrecken sich automatisch über alle existierenden Spalten.

Dein Code müsste also sinngemäß so aussehen, wenn Du keine Spalten verwendest:

Code: Alles auswählen

for i ...
  InsertItem(i, "item text")
  SetItemData(i, whatever)
Und wenn Du tatsächlich Spalten haben willst:

Code: Alles auswählen

InsertColumn(0, "spalte1 heading")
InsertColumn(1, "spalte2 heading")
InsertColumn(2, "spalte3 heading")

for i ...
  InsertItem(i, "item text spalte1") // beim einfuegen wird nur der text der ersten spalte gesetzt
  SetItemText(i, 1, "item text spalte2") // aktualisiert den text für spalte2
  SetItemText(i, 2, "item text spalte3") // aktualisiert den text für spalte3
  SetItemData(i, whatever)

Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Re: wxListCtrl einträge hinzufügen [gelöst]

Beitrag von The Hit-Man » 13.06.2010 12:51:35

ich habe es dann so gelöst. wußte nicht, das nen append schon reicht. die spalten hatte ich ja schon vorher definiert.

Code: Alles auswählen

for i in range(3):
    l.Append(["a%i" %i, "b%i" %i])
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

Antworten