Selektierte Einträge einer wx.ListCtrl ausgeben

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

in der Doku zu wx.ListCtrl habe ich nichts gefunden, um alle selektierten Einträge einer ListCtrl auszugeben (so etwas in der Art von wx.ListCtrl.GetSelections() oder so). Für eine ListBox gibt es so etwas.

Was ist der einfachste Weg, alle selektierten Einträge einer ListCtrl auszugeben? Habe ich da etwas übersehen, oder muss man sich da etwas selber basteln?

Grüße
Mawilo
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Ich habe das einmal so gemacht:

(es ist grundsätzlich etwas umständlich)

Code: Alles auswählen

            index = -1
            for i in range (self.GetItemCount()):
                index = self.GetNextItem(index, wx.LIST_NEXT_ALL, wx.LIST_STATE_SELECTED)
                if index == -1:
                    break
                else:
                    item = self.GetItem(index, 1)  #the column
                    path = item.GetText()
                    #do whatever you want with it
Nachtrag:
Im wxPython Demo ist auch so etwas drin:
demo => Listctrl demo => selektiere ein paar => rechtsclick auf ein selektiertes item => iterate selected => im logwindow werden die selektierten aufgelistet.
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Danke für den Hinweis mit der Demo. Das hatte ich gar nicht gesehen. Ich habe es jetzt so gelöst:

Code: Alles auswählen

index = ListCtrl.GetFirstSelected()
while index != -1:
    # mach was mit dem selektierten Item ...
    # z.B. ListCtrl.GetItemText(index) oder ListCtrl.GetItemData(index)
    # an eine Funktion übergeben
    index = ListCtrl.GetNextSelected(index)
Grüße
Mawilo
Antworten