Hi Gerold
Ja...Ich schreibe das da so doof rein.
Mir ist aber auch noch nichts besseres eingefallen. Ich lese das ganze aus einem xls File. Und das sieht auf das Beispiel bezogen dann so aus:
Code: Alles auswählen
------------------------------------------------
Familie_1 | Peter | mit einem Bein
Familie_1 | Hans | mit allen Gliedmaßen
Familie_2 | Horst | nur Arme
Familie_2 | Peter | mit 3 Beinen
Familie_1 | Peter | mit einem Arm
------------------------------------------------
Code: Alles auswählen
#Öffnet die Excel-Datei und die erste Tabelle
book = xlrd.open_workbook(self.xls_pfad)
self.tabelle1 = book.sheet_by_index(0)
self.zeilen_anzahl = self.tabelle1.nrows
haupt_knoten = self.tree_ctrl_1.AddRoot("Mehrfamilienhaus")
#Holt alle Familien aus der xls Spalte Familie und übergibt ohne doppelte an Familie_liste
Familie_spalte=[]
for x in self.tabelle1.col_values(0,0,self.zeilen_anzahl):
Familie_spalte.append(x)
Familie_liste = list(set(Familie_spalte))
#Fügt alle Familien aus der Liste in den Tree
for y in Familie_liste:
Familie_knoten = self.tree_ctrl_1.AppendItem(haupt_knoten,y)
#Prüft welcher Name zu welcher Familie gehört und fügt ihn dann zum Tree hinzu
for i in range(self.zeilen_anzahl):
if y == self.tabelle1.cell_value(i,0):
SG_child = self.tree_ctrl_1.AppendItem(Familie_knoten,self.tabelle1.cell_value(i,1))
self.tree_ctrl_1.ExpandAll()
Der User darf die Reihenfolge wie er in das xls-File schreibt frei wählen.
Und hinter den Namen der Familien ist auch ein Unterschied aber im Tree sind die Gliedmaßen nicht von Interesse, also nur einmal der Name. Da ich mit, eine Liste erstellen und doppelte rauslöchen, schon einen Ansatz hatte, hab ich gehofft es gibt einen einfachen Befehl. Aber sieht wohl so aus als müsste ich meinen Ansatz nochmal überdenken.
Gruß Harry