gui bekommt jetzt die Config mit, um daraus die Texte und Inhalte der Comboboxen usw. aufzubauen
This commit is contained in:
+37
-23
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user