From beec42adce69b993e05d58917999aaec79782ec5 Mon Sep 17 00:00:00 2001 From: mistangl Date: Thu, 25 Jan 2024 13:39:38 +0100 Subject: [PATCH] =?UTF-8?q?callback=20funktionen=20der=20Comboboxen=20gebe?= =?UTF-8?q?n=20auch=20den=20neuen=20Wert=20mit,=20der=20vom=20Nutzer=20gew?= =?UTF-8?q?=C3=A4hlt=20wurde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/controller.py | 38 +++++++++++++++++++++++-------- lib/gui.py | 58 ++++++++++++++++++++++------------------------- 2 files changed, 56 insertions(+), 40 deletions(-) diff --git a/lib/controller.py b/lib/controller.py index b4392c0..1022116 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -59,7 +59,7 @@ class Controller(): # merkt sich die Nutzereingaben, bzw. Daten für die GUI def set_gui_dict(self, data:dict): """merken der Eingaben des Nutzers der GUI """ - for k,v in data: + for k,v in data.items(): self.set_gui_data(k,v) def set_gui_data(self, key, value): """merken der Eingaben des Nutzers der GUI """ @@ -70,9 +70,13 @@ class Controller(): def get_all_gui_data(self): return self.model.get_all_gui_data() - def callback(self, key): - if self.logic: - self.logic.callback(key) + def callback(self, key, value): + if not self.logic: + return + model_values = self.logic.callback(key, value) + if model_values: + self.set_gui_dict(model_values) + self.refresh_gui() class GuiLogic(): """ @@ -108,7 +112,7 @@ class GuiLogic(): 'cb_zurücksetzen' ] - def callback(self, key): + def callback(self, key, value): if key not in self.callbacks: raise Exception("this callback does not exist "+key) if key == 'cb_pdm_kategorie_neu': @@ -148,7 +152,7 @@ class GuiLogic(): elif key == 'cb_werkstoffdiskrepanz': pass elif key == 'cb_werkstofftyp_neu': - self.werkstofftyp() + return self.werkstofftyp(value) elif key == 'cb_material_neu': pass elif key == 'cb_oberflaeche_neu': @@ -163,9 +167,25 @@ class GuiLogic(): pass else: raise Exception("this callback does not exist "+key) - def werkstofftyp(self): - wnamen = self.config.Werkstoffe.get_werkstoff_namen() - pass + + def werkstofftyp(self, selected_werkstoff): + """bekommt Aluminium, Stahl etc. und setzt dann die anderen Felder der Oberfläche""" + wnamen = self.config.Werkstoffe.get_werkstoffe_of_name(selected_werkstoff) + onamen = self.config.Oberfläche.get_oberfläche_of_type(selected_werkstoff) + farben = self.config.Farben.get_oberfläche_of_type(selected_werkstoff) + # setze die Inhalte der abhängigen Comboboxen neu und den Wert im Modell + ret = { + # das Feld selbst mit dem Selektierten beschreiben + 'werkstofftyp_neu': selected_werkstoff, + # die neuen Inhalte der comboboxen setzen + 'cb_material_neu': wnamen, + 'cb_oberflaeche_neu': onamen, + # der angezeigte Wert der Combos sollte anfangs dem ersten der Liste entsprechen + 'material_neu': wnamen[0], + 'oberflaeche_neu': onamen[0], + 'farbe_neu': farben[0], + } + return ret diff --git a/lib/gui.py b/lib/gui.py index 301a0a4..d783ac9 100644 --- a/lib/gui.py +++ b/lib/gui.py @@ -36,11 +36,11 @@ class AllFrames(): def get_controller(self): return self._controller - def callback(self, key): + def callback(self, key, value): """ruft den Controller und damit die Businesslogic auf, dass dieser key gerade in die Oberfläche gesetzt wurde""" controller = self.get_controller() if controller: - controller.callback(key) + controller.callback(key, value) def data_to_model(self, controller): """schreibt die Daten in das Modell""" @@ -185,7 +185,7 @@ class RightFrameLabels(AllFrames): self.teilenummer_text = tk.StringVar() teilenummer_entry = ttk.Entry(frame, textvariable=self.teilenummer_text, width=9) teilenummer_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=3, pady=3) - teilenummer_entry.bind('<>', lambda event:self.callback("cb_teilenummer")) + teilenummer_entry.bind('<>', lambda event:self.callback("cb_teilenummer", self.teilenummer_text.get())) self.rownum += 1 separator2 = ttk.Separator(frame, orient='horizontal') separator2.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3) @@ -232,7 +232,7 @@ class RightFramePDM(AllFrames): self.pdmkategorie_combo = ttk.Combobox(frame, textvariable=self.pdm_category) self.pdmkategorie_combo['values'] = categories self.pdmkategorie_combo['state'] = 'readonly' - self.pdmkategorie_combo.bind('<>', lambda event:self.callback('cb_pdm_kategorie_neu')) + self.pdmkategorie_combo.bind('<>', lambda event:self.callback('cb_pdm_kategorie_neu', self.pdm_category.get())) self.pdmkategorie_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -244,7 +244,7 @@ class RightFramePDM(AllFrames): self.neuaufbau_checkbutton = ttk.Checkbutton(frame, #text='ja', variable=self.neuaufbau, - command=lambda: self.callback("cb_neuaufbau"), + command=lambda: self.callback("cb_neuaufbau", self.neuaufbau), onvalue=True, offvalue=False) self.neuaufbau_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) @@ -257,7 +257,7 @@ class RightFramePDM(AllFrames): self.aushalbzeug_checkbutton = ttk.Checkbutton(frame, #text='neu', variable=self.aus_halbzeug_neu, - command=lambda: self.callback("cb_aus_halbzeug_neu"), + command=lambda: self.callback("cb_aus_halbzeug_neu", self.aus_halbzeug_neu), onvalue=True, offvalue=False) self.aushalbzeug_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) @@ -295,7 +295,7 @@ class RightFramePDM(AllFrames): self.lebenszyklusstatus_combo = ttk.Combobox(frame, textvariable=self.lebenszyklus_status_neu) #self.lebenszyklusstatus_combo['values'] = lstatus self.lebenszyklusstatus_combo['state'] = 'readonly' - self.lebenszyklusstatus_combo.bind('<>', lambda event:self.callback('cb_lebenszyklus_status_neu')) + self.lebenszyklusstatus_combo.bind('<>', lambda event:self.callback('cb_lebenszyklus_status_neu', self.lebenszyklus_status_neu.get())) self.lebenszyklusstatus_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -306,7 +306,7 @@ class RightFramePDM(AllFrames): self.model3d_combo = ttk.Combobox(frame, textvariable=self.model3d_neu) self.model3d_combo['values'] = ['pfad1 Teilenummer in Dateinamen','pfad2 Teilenummer in Dateinamen'] self.model3d_combo['state'] = 'readonly' - self.model3d_combo.bind('<>', lambda event:self.callback('cb_3Dmodel_neu')) + 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.W, padx=3, pady=3) #toplevel = tk.Toplevel() #toplevel.title("search Window") @@ -455,7 +455,7 @@ class RightFrameHalbzeugOhneS(AllFrames): self.halbzeugOhneSaege_neu_combo = ttk.Combobox(frame, textvariable=self.halbzeugOhneSaege_neu) self.halbzeugOhneSaege_neu_combo['values'] = ['ja','nein'] self.halbzeugOhneSaege_neu_combo['state'] = 'readonly' - self.halbzeugOhneSaege_neu_combo.bind('<>', lambda event:self.callback('cb_halbzeugOhneSaege_neu')) + self.halbzeugOhneSaege_neu_combo.bind('<>', lambda event:self.callback('cb_halbzeugOhneSaege_neu', self.halbzeugOhneSaege_neu.get())) self.halbzeugOhneSaege_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -470,7 +470,7 @@ class RightFrameHalbzeugOhneS(AllFrames): self.ruestcode_neu_combo = ttk.Combobox(frame, textvariable=self.ruestcode_neu) self.ruestcode_neu_combo['values'] = ruestcodes self.ruestcode_neu_combo['state'] = 'readonly' - self.ruestcode_neu_combo.bind('<>', lambda event:self.callback('cb_ruestcode_neu')) + self.ruestcode_neu_combo.bind('<>', lambda event:self.callback('cb_ruestcode_neu', self.ruestcode_neu.get())) self.ruestcode_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -485,7 +485,7 @@ class RightFrameHalbzeugOhneS(AllFrames): self.fertigungsart_neu_combo = ttk.Combobox(frame, textvariable=self.fertigungsart_neu) self.fertigungsart_neu_combo['values'] = categories self.fertigungsart_neu_combo['state'] = 'readonly' - self.fertigungsart_neu_combo.bind('<>', lambda event:self.callback('cb_fertigungsart_neu')) + self.fertigungsart_neu_combo.bind('<>', lambda event:self.callback('cb_fertigungsart_neu', self.fertigungsart_neu.get())) self.fertigungsart_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -500,7 +500,7 @@ class RightFrameHalbzeugOhneS(AllFrames): self.allgemeintoleranz_neu_combo = ttk.Combobox(frame, textvariable=self.allgemeintoleranz_neu) self.allgemeintoleranz_neu_combo['values'] = categories self.allgemeintoleranz_neu_combo['state'] = 'readonly' - self.allgemeintoleranz_neu_combo.bind('<>', lambda event:self.callback('cb_allgemeintoleranz_neu')) + self.allgemeintoleranz_neu_combo.bind('<>', lambda event:self.callback('cb_allgemeintoleranz_neu', self.allgemeintoleranz_neu.get())) self.allgemeintoleranz_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -515,7 +515,7 @@ class RightFrameHalbzeugOhneS(AllFrames): self.fosGruppe_neu_combo = ttk.Combobox(frame, textvariable=self.fosGruppe_neu) self.fosGruppe_neu_combo['values'] = categories self.fosGruppe_neu_combo['state'] = 'readonly' - self.fosGruppe_neu_combo.bind('<>', lambda event:self.callback('cb_fosGruppe_neu')) + self.fosGruppe_neu_combo.bind('<>', lambda event:self.callback('cb_fosGruppe_neu', self.fosGruppe_neu.get())) self.fosGruppe_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -530,7 +530,7 @@ class RightFrameHalbzeugOhneS(AllFrames): self.kalkulationsart_neu_combo = ttk.Combobox(frame, textvariable=self.kalkulationsart_neu) self.kalkulationsart_neu_combo['values'] = categories self.kalkulationsart_neu_combo['state'] = 'readonly' - self.kalkulationsart_neu_combo.bind('<>', lambda event:self.callback('cb_kalkulationsart_neu')) + self.kalkulationsart_neu_combo.bind('<>', lambda event:self.callback('cb_kalkulationsart_neu', self.kalkulationsart_neu.get())) self.kalkulationsart_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -628,7 +628,7 @@ class RightFrameBeschaffungsart(AllFrames): self.beschaffungsart_combo = ttk.Combobox(frame, textvariable=self.beschaffungsart_neu) self.beschaffungsart_combo['values'] = categories self.beschaffungsart_combo['state'] = 'readonly' - self.beschaffungsart_combo.bind('<>', lambda event:self.callback('cb_beschaffungsart_neu')) + self.beschaffungsart_combo.bind('<>', lambda event:self.callback('cb_beschaffungsart_neu', self.beschaffungsart_neu.get())) self.beschaffungsart_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -643,7 +643,7 @@ class RightFrameBeschaffungsart(AllFrames): self.mengeneinheit_combo = ttk.Combobox(frame, textvariable=self.mengeneinheit_neu) self.mengeneinheit_combo['values'] = categories self.mengeneinheit_combo['state'] = 'readonly' - self.mengeneinheit_combo.bind('<>', lambda event:self.callback('cb_mengeneinheit_neu')) + self.mengeneinheit_combo.bind('<>', lambda event:self.callback('cb_mengeneinheit_neu', self.mengeneinheit_neu.get())) self.mengeneinheit_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -658,7 +658,7 @@ class RightFrameBeschaffungsart(AllFrames): self.halbzeug_combo = ttk.Combobox(frame, textvariable=self.halbzeug_neu) self.halbzeug_combo['values'] = ['ja','nein'] self.halbzeug_combo['state'] = 'readonly' - self.halbzeug_combo.bind('<>', lambda event:self.callback('cb_halbzeug_neu')) + self.halbzeug_combo.bind('<>', lambda event:self.callback('cb_halbzeug_neu', self.halbzeug_neu.get())) self.halbzeug_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -738,7 +738,7 @@ class RightFrameTOSGruppe(AllFrames): self.dispogruppe_neu_combo = ttk.Combobox(frame, textvariable=self.dispogruppe_neu) self.dispogruppe_neu_combo['values'] = categories self.dispogruppe_neu_combo['state'] = 'readonly' - self.dispogruppe_neu_combo.bind('<>', lambda event:self.callback('cb_dispogruppe_neu')) + self.dispogruppe_neu_combo.bind('<>', lambda event:self.callback('cb_dispogruppe_neu', self.dispogruppe_neu.get())) self.dispogruppe_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -753,7 +753,7 @@ class RightFrameTOSGruppe(AllFrames): self.dispolaufgruppe_neu_combo = ttk.Combobox(frame, textvariable=self.dispolaufgruppe_neu) self.dispolaufgruppe_neu_combo['values'] = categories self.dispolaufgruppe_neu_combo['state'] = 'readonly' - self.dispolaufgruppe_neu_combo.bind('<>', lambda event:self.callback('cb_dispolaufgruppe_neu')) + self.dispolaufgruppe_neu_combo.bind('<>', lambda event:self.callback('cb_dispolaufgruppe_neu', self.dispolaufgruppe_neu.get())) self.dispolaufgruppe_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -791,7 +791,7 @@ class RightFrameTOSGruppe(AllFrames): self.hersteller_neu_combo = ttk.Combobox(frame, textvariable=self.hersteller_neu) self.hersteller_neu_combo['values'] = categories self.hersteller_neu_combo['state'] = 'readonly' - self.hersteller_neu_combo.bind('<>', lambda event:self.callback('cb_hersteller_neu')) + self.hersteller_neu_combo.bind('<>', lambda event:self.callback('cb_hersteller_neu', self.hersteller_neu.get())) self.hersteller_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -883,8 +883,7 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): self.rownum = AllFrames.get_rows(self) col_left = 0 - categories = configs.Allgemein.get_options("Kategorien") - wnamen = configs.Werkstoffe.get_werkstoff_namen() + # wnamen = configs.Werkstoffe.get_werkstoff_namen() # Werkstoffdiskrepanz werkstoffdiskr_label = ttk.Label(frame, text="Werkstoffdiskrepanz:") @@ -894,7 +893,7 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): werkstoffdiskr_checkbutton = ttk.Checkbutton(frame, #text='ja', variable=self.werkstoffdiskrepanz, - command=lambda: self.callback("cb_werkstoffdiskrepanz"), + command=lambda: self.callback("cb_werkstoffdiskrepanz", self.werkstoffdiskrepanz), onvalue=True, offvalue=False) werkstoffdiskr_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) @@ -905,9 +904,9 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): werkstofftyp_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.werkstofftyp_neu = tk.StringVar() self.werkstofftyp_neu_combo = ttk.Combobox(frame, textvariable=self.werkstofftyp_neu) - self.werkstofftyp_neu_combo['values'] = wnamen + # self.werkstofftyp_neu_combo['values'] = wnamen self.werkstofftyp_neu_combo['state'] = 'readonly' - self.werkstofftyp_neu_combo.bind('<>', lambda event:self.callback('cb_werkstofftyp_neu')) + self.werkstofftyp_neu_combo.bind('<>', lambda event:self.callback('cb_werkstofftyp_neu', self.werkstofftyp_neu.get())) self.werkstofftyp_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -920,9 +919,8 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): self.material_neu = tk.StringVar() self.material_neu_combo = ttk.Combobox(frame, textvariable=self.material_neu) - self.material_neu_combo['values'] = categories self.material_neu_combo['state'] = 'readonly' - self.material_neu_combo.bind('<>', lambda event:self.callback('cb_material_neu')) + self.material_neu_combo.bind('<>', lambda event:self.callback('cb_material_neu', self.material_neu.get())) self.material_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -933,9 +931,8 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): self.oberflaeche_neu = tk.StringVar() self.oberflaeche_neu_combo = ttk.Combobox(frame, textvariable=self.oberflaeche_neu) - self.oberflaeche_neu_combo['values'] = categories self.oberflaeche_neu_combo['state'] = 'readonly' - self.oberflaeche_neu_combo.bind('<>', lambda event:self.callback('cb_oberflaeche_neu')) + self.oberflaeche_neu_combo.bind('<>', lambda event:self.callback('cb_oberflaeche_neu', self.oberflaeche_neu.get())) self.oberflaeche_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1 @@ -945,9 +942,8 @@ class RightFrameWerkstoffdiskrepanz(AllFrames): self.farbe_neu = tk.StringVar() self.farbe_neu_combo = ttk.Combobox(frame, textvariable=self.farbe_neu) - self.farbe_neu_combo['values'] = categories self.farbe_neu_combo['state'] = 'readonly' - self.farbe_neu_combo.bind('<>', lambda event:self.callback('cb_farbe_neu')) + self.farbe_neu_combo.bind('<>', lambda event:self.callback('cb_farbe_neu', self.farbe_neu.get())) self.farbe_neu_combo.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3) self.rownum += 1