Ich hatte mich entschieden, zunächst über plumpe Entrys mit Button_commands ein Dictionary zu füllen. Das dictionary self.data wird in der Klasse initialisiert. Dann werden die Daten von einer anderen Klassen gesendet und so eingefügt.
Code: Alles auswählen
def add_main_line(self,name_line):
if not name_line in self.data:
self.data[name_line] = {}
self.build_table()
def add_sub_line(self,val_height):
if not val_height in self.data[self.sub_value]:
self.data[self.sub_value][val_height] = {}
self.data[self.sub_value][val_height][val_height] = val_height
self.data[self.sub_value][val_height]['width'] = self.default_setting.get('width')
self.data[self.sub_value][val_height]['remark'] = self.default_setting.get('remark')
self.build_table()
Damit wird nun ein Dictionary erzeugt, welches die folgende Form mit Beispielwerte besitzt: {'1':{'2':{'2':'2'},'3':{'3':'3'}}}
Aus meiner Sicht ist die Staffelung notwendig, da die erste Referenz (hier mit 1 bezeichnet) die ID der Hauptzeile bedeutet. Die zweite Referenz bedeutet die ID der Datenzeile und dort sind dann die Values der Treeviewtabelle gespeichert.
Folgendermaßen lasse ich die Tabelle erzeugen.
Code: Alles auswählen
def rebuild_table(self):
for child in self.container.treeview.get_children():
self.container.treeview.delete(child)
count_A = 0
count_B = 0
for row,key in enumerate(sorted(self.data.keys(),key=lambda x: int(x))):
self.iid = self.container.treeview.insert('', count_A, text=(str(key)))
for rowB,keyB in enumerate(sorted(self.data[key].keys(),key=lambda x: int(x))):
if self.data[key]:
self.container.treeview.insert(self.iid,'end', text=(keyB), values=(self.default_setting.get('width')+" mm", self.default_setting.get('remark')))
count_A += 1