kleinere Umbauarbeiten am Hauptframe. Callbackfunktion für ein Entry gebaut, das Längenabhängig den Text einfärbt

This commit is contained in:
2024-02-15 18:55:39 +01:00
parent 4fe5c37bb5
commit f7033ebe76
+38 -27
View File
@@ -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('<Double-Button-1>', 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('<<ComboboxSelected>>', 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('<MouseWheel>', 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)