SetSelection wx.TreeCtrl

Plattformunabhängige GUIs mit wxWidgets.
Antworten
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

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
Benutzeravatar
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
alexander255
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
Benutzeravatar
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
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

@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.
Ich meinte eigentlich die hierarchischen Listen (sprich Baumstruktur, wxTreeCtrl mit wx.TreeItemId) da kann man leider nicht sagen: SelectItemWithPyData(...) oder so.

Kennt noch jemand einen Tipp?
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Hallo?
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Kann GTK oder QT sowas?
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Es lebe WX...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Offensichtlich weiß das hier niemand oder hat keine Zeit. Schonmal die Mailingliste befragt?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
alexander255
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

Code: Alles auswählen

parent_tree.GetItemPyData(parent_tree.GetSelection())
abgefragt und mithilfe von

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
aus der Dialogliste herausgepickt wird...

Natürlich nicht der Stein der Waisen aber brauchbar genug. :)

HNAA Alexander
Antworten