gui bekommt jetzt die Config mit, um daraus die Texte und Inhalte der Comboboxen usw. aufzubauen

This commit is contained in:
2024-01-17 16:21:28 +01:00
parent 96080a75b5
commit bbf0cc4edc
+37 -23
View File
@@ -81,13 +81,15 @@ class AllFrames():
""" enthält alle gleichen Methoden für die Widgets in der rechte Spalte """ enthält alle gleichen Methoden für die Widgets in der rechte Spalte
""" """
def __init__(self, nrow=0): def __init__(self, nrow=0):
self.set_start_rwo(nrow) self.set_start_row(nrow)
self._controller = None self._controller = None
def get_rows(self): def get_rows(self):
"""gibt die Anzahl der von diesem Widget belegten Zeilen zurück"""
return self.rownum return self.rownum
def set_start_rwo(self, nrow): def set_start_row(self, nrow):
"""setzt für diesen Frame die Anfangszeile"""
if nrow < 0: if nrow < 0:
raise Exception("this row can not be set") raise Exception("this row can not be set")
self.rownum = nrow self.rownum = nrow
@@ -98,25 +100,30 @@ class AllFrames():
return self._controller return self._controller
def callback(self, key): def callback(self, key):
"""ruft den Controller und damit die Businesslogic auf, dass dieser key gerade in die Oberfläche gesetzt wurde"""
controller = self.get_controller() controller = self.get_controller()
if controller: if controller:
controller.callback(key) controller.callback(key)
def data_to_model(self, controller): def data_to_model(self, controller):
"""schreibt die daten in das Modell"""
data = self.get_data() data = self.get_data()
controller.set_gui_dict(data) controller.set_gui_dict(data)
def data_to_model(self, controller, key, value): def data_to_model(self, controller, key, value):
"""schreibt den Value unter dem key in das Modell"""
controller.set_gui_data(key, value) controller.set_gui_data(key, value)
def set_button_content(self, adict):
pass
class LeftFrameAsm(AllFrames): class LeftFrameAsm(AllFrames):
def __init__(self, frame, nrow=0): def __init__(self, frame, nrow=0, configs=None):
AllFrames.__init__(self, nrow) AllFrames.__init__(self, nrow)
self.frame = frame self.frame = frame
self.build_widgets() self.build_widgets(configs)
def build_widgets(self): def build_widgets(self, configs):
frame = self.frame frame = self.frame
self.rownum = AllFrames.get_rows(self) self.rownum = AllFrames.get_rows(self)
col_left = 0 col_left = 0
@@ -140,12 +147,12 @@ class LeftFrameAsm(AllFrames):
self.asm_number.set(data["asm_id"]) self.asm_number.set(data["asm_id"])
class RightFrameLabels(AllFrames): class RightFrameLabels(AllFrames):
def __init__(self, frame, nrow=0): def __init__(self, frame, nrow=0, configs=None):
AllFrames.__init__(self, nrow) AllFrames.__init__(self, nrow)
self.frame = frame self.frame = frame
self.build_widgets() self.build_widgets(configs)
def build_widgets(self): def build_widgets(self, configs):
frame = self.frame frame = self.frame
self.rownum = AllFrames.get_rows(self) self.rownum = AllFrames.get_rows(self)
col_left = 0 col_left = 0
@@ -191,21 +198,22 @@ class RightFrameLabels(AllFrames):
class RightFramePDM(AllFrames): class RightFramePDM(AllFrames):
def __init__(self, frame, nrow=0): def __init__(self, frame, nrow=0, configs=None):
AllFrames.__init__(self, nrow) AllFrames.__init__(self, nrow)
self.frame = frame self.frame = frame
self.build_widgets() self.build_widgets(configs)
def build_widgets(self): def build_widgets(self, configs):
frame = self.frame frame = self.frame
self.rownum = AllFrames.get_rows(self) self.rownum = AllFrames.get_rows(self)
col_left = 0 col_left = 0
# pdmkategorie # pdmkategorie
categories = configs.Allgemein.get_options("Kategorien") #"Baugruppe", "Einzelteil", "Kaufteil", "NichtSivas", "Normteil", "Schweissbaugruppe"
pdmkategorie_label = ttk.Label(frame, text="PDM-Kategorie:" ) pdmkategorie_label = ttk.Label(frame, text="PDM-Kategorie:" )
pdmkategorie_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) pdmkategorie_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5)
self.pdm_category = tk.StringVar() self.pdm_category = tk.StringVar()
pdmkategorie_combo = ttk.Combobox(frame, textvariable=self.pdm_category) pdmkategorie_combo = ttk.Combobox(frame, textvariable=self.pdm_category)
pdmkategorie_combo['values'] = ["Baugruppe", "Einzelteil", "Kaufteil", "NichtSivas", "Normteil", "Schweissbaugruppe"] pdmkategorie_combo['values'] = categories
pdmkategorie_combo['state'] = 'readonly' pdmkategorie_combo['state'] = 'readonly'
pdmkategorie_combo.bind('<<ComboboxSelected>>', lambda event:self.callback('pdm_kategorie_neu')) pdmkategorie_combo.bind('<<ComboboxSelected>>', lambda event:self.callback('pdm_kategorie_neu'))
pdmkategorie_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) pdmkategorie_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5)
@@ -226,11 +234,12 @@ class RightFramePDM(AllFrames):
self.rownum += 1 self.rownum += 1
# Lebenszyklusstatus # Lebenszyklusstatus
lstatus = configs.Allgemein.get_options("Lebenszyklus") # Serie, Prototyp
lebenszyklusstatus_label = ttk.Label(frame, text="Lebenszyklusstatus:") lebenszyklusstatus_label = ttk.Label(frame, text="Lebenszyklusstatus:")
lebenszyklusstatus_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5) lebenszyklusstatus_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5)
self.lebenszyklus_status_neu = tk.StringVar() self.lebenszyklus_status_neu = tk.StringVar()
lebenszyklusstatus_combo = ttk.Combobox(frame, textvariable=self.lebenszyklus_status_neu) lebenszyklusstatus_combo = ttk.Combobox(frame, textvariable=self.lebenszyklus_status_neu)
lebenszyklusstatus_combo['values'] = ["Serie", "Prototyp"] lebenszyklusstatus_combo['values'] = lstatus
lebenszyklusstatus_combo['state'] = 'readonly' lebenszyklusstatus_combo['state'] = 'readonly'
lebenszyklusstatus_combo.bind('<<ComboboxSelected>>', lambda event:self.callback('lebenszyklus_status_neu')) lebenszyklusstatus_combo.bind('<<ComboboxSelected>>', lambda event:self.callback('lebenszyklus_status_neu'))
lebenszyklusstatus_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5) lebenszyklusstatus_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5)
@@ -282,10 +291,15 @@ class RightFramePDM(AllFrames):
class App(): class App():
def __init__(self, root): def __init__(self, root, configs=None):
"""Standardgui mit Baum zur Anwahl der Teile des Assemblies""" """Standardgui mit Baum zur Anwahl der Teile des Assemblies"""
self.root = root self.root = root
self.build_widgets(root, configs)
def build_widgets(self, root, configs):
""" baue alle Frames der Gui auf
"""
# configure the grid # configure the grid
# die erste Spalte mit Baum sollte unbeweglich bleiben bei Vergräßerung des Fensters. # die erste Spalte mit Baum sollte unbeweglich bleiben bei Vergräßerung des Fensters.
@@ -303,34 +317,34 @@ class App():
style = ttk.Style(self.root) style = ttk.Style(self.root)
style.theme_use('classic') style.theme_use('classic')
self.lf1 = LeftFrameAsm(left_frame, 0) self.lf1 = LeftFrameAsm(left_frame, 0, configs)
nrows = self.lf1.get_rows() nrows = self.lf1.get_rows()
self.lf2 = TreeView(left_frame, nrows) self.lf2 = TreeView(left_frame, nrows)
self.rf0 = RightFrameLabels(right_frame, 0) self.rf1 = RightFrameLabels(right_frame, 0, configs)
nrows = self.rf0.get_rows()
self.rf1 = RightFramePDM(right_frame, nrows)
nrows = self.rf1.get_rows() nrows = self.rf1.get_rows()
self.rf2 = RightFramePDM(right_frame, nrows, configs)
nrows = self.rf2.get_rows()
#self.rf2 = RightFramePDM(right_frame, nrows) #self.rf2 = RightFramePDM(right_frame, nrows)
# TODO usw. # TODO usw.
def data_from_model(self): def data_from_model(self):
""" methode zum auslesen aller Daten der Oberfläche aus dem Modell """ methode zum Auslesen aller Daten der Oberfläche aus dem Modell
""" """
self.lf1.data_from_model() self.lf1.data_from_model()
self.lf2.data_from_model() self.lf2.data_from_model()
self.rf0.data_from_model()
self.rf1.data_from_model() self.rf1.data_from_model()
self.rf2.data_from_model()
def set_controller(self, controller): def set_controller(self, controller):
# merken des Handels auf den Controller in jedem widget """ merken des Handels auf den Controller in jedem Widget"""
self._controller = controller self._controller = controller
self.lf1.set_controller(controller) self.lf1.set_controller(controller)
self.lf2.set_controller(controller) self.lf2.set_controller(controller)
self.rf0.set_controller(controller)
self.rf1.set_controller(controller) self.rf1.set_controller(controller)
self.rf2.set_controller(controller)
def mainloop(self): def mainloop(self):
self.root.mainloop() self.root.mainloop()