SetSelection wx.TreeCtrl

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

Montag 5. Januar 2009, 00:47

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

Montag 5. Januar 2009, 12:46

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

Montag 5. Januar 2009, 15:01

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

Dienstag 6. Januar 2009, 09:36

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

Dienstag 6. Januar 2009, 19:43

@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

Donnerstag 8. Januar 2009, 14:47

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

Freitag 9. Januar 2009, 21:10

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

Montag 12. Januar 2009, 17:42

Es lebe WX...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 12. Januar 2009, 19:04

Offensichtlich weiß das hier niemand oder hat keine Zeit. Schonmal die Mailingliste befragt?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

Dienstag 3. Februar 2009, 21:21

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