From f7033ebe76a965898336263fb0cb7f57c7a6a794 Mon Sep 17 00:00:00 2001 From: mistangl Date: Thu, 15 Feb 2024 18:55:39 +0100 Subject: [PATCH] =?UTF-8?q?kleinere=20Umbauarbeiten=20am=20Hauptframe.=20C?= =?UTF-8?q?allbackfunktion=20f=C3=BCr=20ein=20Entry=20gebaut,=20das=20L?= =?UTF-8?q?=C3=A4ngenabh=C3=A4ngig=20den=20Text=20einf=C3=A4rbt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/gui.py | 65 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/lib/gui.py b/lib/gui.py index 68f77dd..cda9298 100644 --- a/lib/gui.py +++ b/lib/gui.py @@ -49,11 +49,6 @@ class AllFrames(): """schreibt den Value unter dem key in das Modell""" controller.set_gui_data(key, value) - def set_button_content(self, adict): - pass - - - class TreeView(): def __init__(self, frame, nrow=0): # a treeview @@ -72,7 +67,7 @@ class TreeView(): self.tree.bind('', self.item_selected) # Doppelklick: def set_controller(self, controller): - self.controller = controller + self._controller = controller def refresh(self, parent_children_mapping, red_ids): self.clear() @@ -111,8 +106,8 @@ class TreeView(): self.tree.tag_configure('missing', background='red') def data_from_model(self): - parent_children_mapping = self.controller.get_parent_children() - red_ids = self.controller.get_red_ids() + parent_children_mapping = self._controller.get_parent_children() + red_ids = self._controller.get_red_ids() self.refresh(parent_children_mapping, red_ids) def item_selected(self, event): @@ -120,7 +115,7 @@ class TreeView(): """ cid = self.tree.selection()[0] # trage die neue ID ins Modell ein - self.controller.set_current_item_id(cid) + self._controller.set_current_item_id(cid) class LeftFrameAsm(AllFrames): def __init__(self, frame, nrow=0): @@ -179,7 +174,7 @@ class RightFrameLabels(AllFrames): feld_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) Sivas_label = ttk.Label(frame, text="SIVAS-Werte" ) Sivas_label.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) - transwritten_label = ttk.Label(frame, text="Überschriebene Werte" ) + transwritten_label = ttk.Label(frame, text="Überschriebene Werte " ) transwritten_label.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) feld_label.configure(font=("Helvetica", 12)) @@ -326,7 +321,7 @@ class RightFramePDM(AllFrames): model3d_label = ttk.Label(frame, text="3D-Modell:" ) model3d_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.model3d_neu = tk.StringVar() - self.model3d_combo = ttk.Combobox(frame, textvariable=self.model3d_neu) + self.model3d_combo = ttk.Combobox(frame, textvariable=self.model3d_neu, justify='right') self.model3d_combo['state'] = 'readonly' self.model3d_combo.bind('<>', lambda event:self.callback('cb_3Dmodel_neu', self.model3d_neu.get())) self.model3d_combo.grid(column=col_left+1, columnspan=2, row=self.rownum, sticky=tk.EW, padx=3, pady=3) @@ -423,11 +418,13 @@ class RightFrameBezeichnung(AllFrames): bezeichnung1_label = ttk.Label(frame, text="Bezeichnung 1:" ) bezeichnung1_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.bezeichnung1_sivas = tk.StringVar() - bezeichnung1_entry = ttk.Entry(frame, textvariable=self.bezeichnung1_sivas, state="readonly") - bezeichnung1_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.bezeichnung1_entry = ttk.Entry(frame, textvariable=self.bezeichnung1_sivas, state="readonly") + self.bezeichnung1_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.bezeichnung1_neu = tk.StringVar() - bezeichnung1_neu_entry = ttk.Entry(frame, textvariable=self.bezeichnung1_neu) - bezeichnung1_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.bezeichnung1_neu.trace_add('write', callback=self.trace_bezeichnung_neu) + self.bezeichnung1_neu_entry = ttk.Entry(frame, textvariable=self.bezeichnung1_neu) + self.bezeichnung1_neu_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) + self.rownum += 1 # Bezeichnung 2 @@ -442,13 +439,22 @@ class RightFrameBezeichnung(AllFrames): separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) self.rownum += 1 + def trace_bezeichnung_neu(self, var, index, mode): + """ Spezial: Bei zu langem Eintrag die Farbe des Textes auffällig machen """ + text = self.bezeichnung1_neu.get() + if len(text) < 6: + self.bezeichnung1_neu_entry.configure(foreground='black') + self._controller.set_gui_data("bezeichnung1_neu", text) + elif len(text) < 11: + self.bezeichnung1_neu_entry.configure(foreground='orange') + else: + self.bezeichnung1_neu_entry.configure(foreground='red') def get_data(self): return { "bezeichnung1_sivas": self.bezeichnung1_sivas.get(), "bezeichnung1_neu": self.bezeichnung1_neu.get(), "bezeichnung2_sivas": self.bezeichnung2_sivas.get(), - "bezeichnung2_neu": self.bezeichnung2_neu.get(), } def data_from_model(self): @@ -459,8 +465,6 @@ class RightFrameBezeichnung(AllFrames): self.bezeichnung1_neu.set(data["bezeichnung1_neu"]) if 'bezeichnung2_sivas' in data: self.bezeichnung2_sivas.set(data["bezeichnung2_sivas"]) - if 'bezeichnung2_neu' in data: - self.bezeichnung2_neu.set(data["bezeichnung2_neu"]) class RightFrameHalbzeugOhneS(AllFrames): def __init__(self, frame, nrow=0): @@ -634,8 +638,6 @@ class RightFrameHalbzeugOhneS(AllFrames): if 'cb_kalkulationsart_neu' in data: self.kalkulationsart_neu_combo['values'] = data['cb_kalkulationsart_neu'] - - class RightFrameBeschaffungsart(AllFrames): def __init__(self, frame, nrow=0): AllFrames.__init__(self, nrow) @@ -1018,7 +1020,6 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): if 'cb_farbe_neu' in data: self.farbe_neu_combo['values'] = data["cb_farbe_neu"] - class RightFrameVersion(AllFrames): def __init__(self, frame, nrow=0): AllFrames.__init__(self, nrow) @@ -1167,9 +1168,9 @@ class App(): """Standardgui mit Baum zur Anwahl der Teile des Assemblies""" self._root = root - self.build_widgets(root) + self.build_widgets() - def build_widgets(self, root): + def build_widgets(self): """ baue alle Frames der Gui auf """ @@ -1185,7 +1186,7 @@ class App(): # gesamtes Fenster durch Scrollbar, aber auch mit Mausrad verschieben self._root.bind('', self.OnMouseWheel) - container = ttk.Frame(root) + container = ttk.Frame(self._root) self._canvas = tk.Canvas(container, width=800, height=900) # canvas = tk.Canvas(container) @@ -1200,22 +1201,32 @@ class App(): ) ) self._canvas.configure(yscrollcommand=vscrollbar.set) + #self._root.grid_columnconfigure(0, weight=0) inner_frame = ttk.Frame(self._canvas) self._canvas.create_window((0, 0), window=inner_frame, anchor="nw") + + # Canvas-Größe anpassen + self._canvas.update_idletasks() + self._canvas.config(scrollregion=self._canvas.bbox("all")) container.pack() self._canvas.pack(side="left", fill="both", expand=True) - vscrollbar.pack(side="right", fill="y") + vscrollbar.pack(side="right", fill="y", expand=False) # einen linken und rechten Rahmen darin # left_frame = ttk.Frame(inner_frame, width=200, height=800) left_frame = ttk.Frame(inner_frame) - left_frame.grid(row=0, column=0, padx=10, pady=3) + #left_frame.grid(row=0, column=0, padx=10, pady=3) + left_frame.pack(side='left', expand=False) # right_frame = ttk.Frame(inner_frame, width=650, height=800) right_frame = ttk.Frame(inner_frame) - right_frame.grid(row=0, column=1, padx=10, pady=3) + #right_frame.grid(row=0, column=1, padx=10, pady=3) + right_frame.pack(side='left', expand=True) + + # self._canvas.columnconfigure(0, weight=1) + # self._canvas.columnconfigure(1, weight=6) # left_frame.columnconfigure(0, weight=1) # right_frame.columnconfigure(0, weight=6)