Statusänderungen der Knöpfe begonnen. Treeview ist noch nicht korrekt.

This commit is contained in:
2024-03-07 17:16:08 +01:00
parent 94ff9aa100
commit 1b8270b908
3 changed files with 103 additions and 36 deletions
+68 -28
View File
@@ -79,28 +79,47 @@ class TreeView():
for c in self.tree.get_children():
self.tree.delete(c)
def _has_childs(self, sid, parent_children_mapping):
'''gibt zurück ob sid ein ein Zwischenknoten eines Baume ist, also kein Blatt hat'''
for parent,children in parent_children_mapping.items():
if sid == parent:
return True
return False
def create(self, parent_children_mapping, red_ids):
# adding data of first column after root
pool = set()
for parent,children in parent_children_mapping.items():
if parent not in pool:
self.tree.insert('', tk.END, text=parent, iid=parent, open=True)
pool.add(parent)
cn = children
# sortiere die Zahlen im Baum immer aufsteigend
cn.sort(reverse=True)
for child_id in cn:
if child_id not in pool:
pool.add(child_id)
if child_id not in red_ids: rowtags = ('good')
else: rowtags = ('missing')
self.tree.insert('', tk.END, text=child_id, iid=child_id, tags=rowtags, open=True)
#self.tree.move(child_id, parent, 0)
pool = dict()
for parent, children in parent_children_mapping.items():
parent_text = parent
# parent erzeugen, falls es diese nicht schon gibt
if parent_text not in pool:
parent_id = self.tree.insert('', tk.END, text=parent_text, open=True)
pool[parent_text] = parent_id
else:
parent_id = pool[parent_text]
# einmal über alles gehen und alle keys an die richtige Stelle schieben
for parent,children in parent_children_mapping.items():
for child_id in children:
self.tree.move(child_id, parent, 0)
for child in children:
child_text = child
if child_text not in red_ids: rowtags = ('good')
else: rowtags = ('missing')
if self._has_childs(child_text, parent_children_mapping) == True:
# wenn das Objekt ein Kind hat, könnte es bereits erzeugt worden sein
if child_text not in pool:
child_id = self.tree.insert('', tk.END, text=child_text, tags=rowtags, open=True)
pool[child_text] = child_id
self.tree.move(child_id, parent_id, 0)
else:
# die Blätter des Baumes kann man bedenkenlos bauen
child_id = self.tree.insert('', tk.END, text=child_text, tags=rowtags, open=True)
self.tree.move(child_id, parent_id, 0)
pool[child_text] = child_id
# # einmal über alles gehen und alle keys an die richtige Stelle schieben
# for parent,children in parent_children_mapping.items():
# for child_id in children:
# self.tree.move(child_id, parent, 0)
# https://www.askpython.com/python-modules/tkinter/tkinter-colors
#self.tree.tag_configure('good', background='LawnGreen')
@@ -280,16 +299,16 @@ class RightFramePDM(AllFrames):
halbzeugnummer_label = ttk.Label(frame, text="Halbzeugnummer:" )
halbzeugnummer_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.halbzeugnummer_neu = tk.StringVar()
halbzeugnummer_neu_entry = ttk.Entry(frame, textvariable=self.halbzeugnummer_neu, width=AllFrames.get_entry_text_width(self))
halbzeugnummer_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.halbzeugnummer_neu_entry = ttk.Entry(frame, textvariable=self.halbzeugnummer_neu, width=AllFrames.get_entry_text_width(self))
self.halbzeugnummer_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.rownum += 1
# Halbzeuglänge
halbzeuglaenge_label = ttk.Label(frame, text="Halbzeuglänge:" )
halbzeuglaenge_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.halbzeuglaenge_neu = tk.StringVar()
halbzeuglaenge_neu_entry = ttk.Entry(frame, textvariable=self.halbzeuglaenge_neu, width=AllFrames.get_entry_text_width(self))
halbzeuglaenge_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.halbzeuglaenge_neu_entry = ttk.Entry(frame, textvariable=self.halbzeuglaenge_neu, width=AllFrames.get_entry_text_width(self))
self.halbzeuglaenge_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.rownum += 1
# HalbzeugOberfläche
@@ -334,8 +353,8 @@ class RightFramePDM(AllFrames):
self.rownum += 1
#lambda: self.callback("cb_speichern", None)
suche3d_button = ttk.Button(frame, text="Durchsuchen..", command=lambda: self.callback("cb_3dsuchen", None))
suche3d_button.grid(column=col_left+2, row=self.rownum, sticky=tk.EW)
self.suche3d_button = ttk.Button(frame, text="Durchsuchen..", command=lambda: self.callback("cb_3dsuchen", None))
self.suche3d_button.grid(column=col_left+2, row=self.rownum, sticky=tk.EW)
self.rownum += 1
@@ -396,9 +415,30 @@ class RightFramePDM(AllFrames):
def set_states(self):
data = self.get_controller().get_gui_states()
pass
# if 'teilenummer' in data:
# self.teilenummer_text["state"] = data['teilenummer']
# if 'datenbank' in data:
# self.datenbank['state'] = data["datenbank"]
if 'neuaufbau' in data:
self.neuaufbau_checkbutton['state'] = data["neuaufbau"]
if 'halbzeugnummer_neu' in data:
self.halbzeugnummer_neu_entry['state'] = data["halbzeugnummer_neu"]
if 'halbzeuglaenge_neu' in data:
self.halbzeuglaenge_neu_entry['state'] = data["halbzeuglaenge_neu"]
if 'aus_halbzeug_neu' in data:
self.aushalbzeug_checkbutton['state'] = data["aus_halbzeug_neu"]
# ab hier die Dropdowns der Oberfläche
if 'cb_pdm_kategorie_neu' in data:
self.pdmkategorie_combo['state'] = data["cb_pdm_kategorie_neu"]
if 'cb_lebenszyklus_status_neu' in data:
self.lebenszyklusstatus_combo['state'] = data["cb_lebenszyklus_status_neu"]
if 'cb_halbzeugoberflaeche' in data:
self.halbzeugoberflaeche_combo['state'] = data["cb_halbzeugoberflaeche"]
if 'cb_halbzeugfarbe' in data:
self.halbzeugfarbe_combo['state'] = data["cb_halbzeugfarbe"]
if 'cb_3Dmodel_neu' in data:
self.model3d_combo['state'] = data["cb_3Dmodel_neu"]
# buttons
if 'cb_3dsuchen' in data:
self.suche3d_button['state'] =data["cb_3dsuchen"]
class RightFrameBezeichnung(AllFrames):
def __init__(self, frame, nrow=0):