SetSelection wx.TreeCtrl

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

SetSelection wx.TreeCtrl

Beitragvon alexander255 » 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

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

Beitragvon alexander255 » 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

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

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

Beitragvon alexander255 » Donnerstag 8. Januar 2009, 14:47

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

Beitragvon alexander255 » Freitag 9. Januar 2009, 21:10

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

Beitragvon alexander255 » Montag 12. Januar 2009, 17:42

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

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

Die Lösung...

Beitragvon alexander255 » 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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder