Hallo @all,
Ich habe zwei Listen (wx.TreeCtrl) die eine wird in einem Dialog geladen die andere im Hauptframe.
Ist es möglich der Liste im Dialog dasselbe Element auswählen zu lassen wie die Liste im Hauptframe?
(Die Listen werden aus der selben Klasse erzeugt)
HAA Alexander
SetSelection wx.TreeCtrl
- martin101986
- User
- Beiträge: 85
- Registriert: Montag 3. Dezember 2007, 19:15
- Wohnort: Steiermark, Österreich
Hallo,
eine TreeCtrl hat folgende Methoden zur Verfügung um die ausgewählten Elemente zu bekommen:
GetSelection() für ein ausgewähltes Element.
GetSelections() für mehrere ausgewählte Elemente.
Dafür muss beim Style wxTR_MULTIPLE angegeben werden damit GetSelections funktioniert.
Ein Element kannst du mit SelectItem(itemid, True) markieren.
Grüße
Martin
eine TreeCtrl hat folgende Methoden zur Verfügung um die ausgewählten Elemente zu bekommen:
GetSelection() für ein ausgewähltes Element.
GetSelections() für mehrere ausgewählte Elemente.
Dafür muss beim Style wxTR_MULTIPLE angegeben werden damit GetSelections funktioniert.
Ein Element kannst du mit SelectItem(itemid, True) markieren.
Grüße
Martin
-
- User
- Beiträge: 30
- Registriert: Montag 28. April 2008, 13:05
SelectItem geht aber nur innerhalb einer Liste im Hauptframe oder Dialog, austauschbar ist der Wert nicht, oder...?
HAA Alexander
HAA Alexander
- martin101986
- User
- Beiträge: 85
- Registriert: Montag 3. Dezember 2007, 19:15
- Wohnort: Steiermark, Österreich
Hallo,
Mit GetItem(itemid, columnnumber) erhälst du eine wxListItem. Dieses kannst du dann entsprechend bearbeiten und über SetItem(listitem) wieder bei der Liste setzen.
Grüße
Martin
Mit GetItem(itemid, columnnumber) erhälst du eine wxListItem. Dieses kannst du dann entsprechend bearbeiten und über SetItem(listitem) wieder bei der Liste setzen.
Grüße
Martin
-
- User
- Beiträge: 30
- Registriert: Montag 28. April 2008, 13:05
Ich meinte eigentlich die hierarchischen Listen (sprich Baumstruktur, wxTreeCtrl mit wx.TreeItemId) da kann man leider nicht sagen: SelectItemWithPyData(...) oder so.@martin: Mit GetItem(itemid, columnnumber) erhälst du eine wxListItem. Dieses kannst du dann entsprechend bearbeiten und über SetItem(listitem) wieder bei der Liste setzen.
Kennt noch jemand einen Tipp?
-
- User
- Beiträge: 30
- Registriert: Montag 28. April 2008, 13:05
Kann GTK oder QT sowas?
-
- User
- Beiträge: 30
- Registriert: Montag 28. April 2008, 13:05
Ich habe bei der Erstellung der Liste eine ID als PyData mitlaufen lassen, welche über abgefragt und mithilfe von aus der Dialogliste herausgepickt wird...
Natürlich nicht der Stein der Waisen aber brauchbar genug.
HNAA Alexander
Code: Alles auswählen
parent_tree.GetItemPyData(parent_tree.GetSelection())
Code: Alles auswählen
def GetItemsWithPyData(self, PyData, parent=None):
if not parent: parent = self.GetRootItem()
items = []
children = self.GetChildren(parent)
for child in children:
print(self.GetItemPyData(child))
if self.GetItemPyData(child) is PyData:
items.append(child)
if self.ItemHasChildren(child):
items.extend(self.GetItemsWithPyData(PyData, child))
return items
Natürlich nicht der Stein der Waisen aber brauchbar genug.

HNAA Alexander