erste callback methoden implementiert.

This commit is contained in:
2024-01-12 18:44:29 +01:00
parent f182b8d806
commit d4ecb88b33
4 changed files with 93 additions and 42 deletions
+66 -38
View File
@@ -11,6 +11,7 @@ from caditem import CadItem
class TreeView(): class TreeView():
def __init__(self, frame, controller): def __init__(self, frame, controller):
self.controller = controller
# a treeview # a treeview
# hier Anzahl der sichtbaren Zeilen des Baums angeben: # hier Anzahl der sichtbaren Zeilen des Baums angeben:
self.tree = ttk.Treeview(frame, height=40) self.tree = ttk.Treeview(frame, height=40)
@@ -58,7 +59,10 @@ class TreeView():
def item_selected(self, event): def item_selected(self, event):
"""callback if an item in the tree has been selected """callback if an item in the tree has been selected
""" """
id = self.tree.selection()[0] cid = self.tree.selection()[0]
# trage es
self.controller.set_gui_data('teilenummer', cid)
self.controller.update_view()
# for selected_item in self.tree.selection(): # for selected_item in self.tree.selection():
# item = self.tree.item(selected_item) # item = self.tree.item(selected_item)
# record = item['values'] # record = item['values']
@@ -68,45 +72,51 @@ class TreeView():
return self.tree return self.tree
class RightFrameLabels(): class RightFrameLabels():
def __init__(self, frame, controller): def __init__(self, frame, controller, nrow=0):
self.controller = controller self.controller = controller
self.frame = frame self.frame = frame
self.build_gui() self.build_gui()
self.data_from_model() self.data_from_model()
self.set_start_rwo(nrow)
def get_rows(self):
return self.rownum
def set_start_rwo(self, nrow):
if nrow < 0:
raise Exception("this row can not be set")
self.rownum = nrow
def build_gui(self): def build_gui(self):
frame = self.frame frame = self.frame
rownum = 0 self.rownum = 0
col_left = 0 col_left = 0
# Feld, SIVAS-Werte, Überschriebene Werte # Feld, SIVAS-Werte, Überschriebene Werte
feld_label = ttk.Label(frame, text="Feld" ) feld_label = ttk.Label(frame, text="Feld" )
feld_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) feld_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5)
Sivas_label = ttk.Label(frame, text="SIVAS-Werte" ) Sivas_label = ttk.Label(frame, text="SIVAS-Werte" )
Sivas_label.grid(column=col_left+1, row=rownum, sticky=tk.W, padx=5, pady=5) Sivas_label.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=5, pady=5)
transwritten_label = ttk.Label(frame, text="Überschriebene Werte" ) transwritten_label = ttk.Label(frame, text="Überschriebene Werte" )
transwritten_label.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) transwritten_label.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5)
feld_label.configure(font=("Helvetica", 16)) feld_label.configure(font=("Helvetica", 16))
Sivas_label.configure(font=("Helvetica",16)) Sivas_label.configure(font=("Helvetica",16))
transwritten_label.configure(font=("Helvetica",16)) transwritten_label.configure(font=("Helvetica",16))
rownum += 1 self.rownum += 1
separator = ttk.Separator(frame, orient='horizontal') separator = ttk.Separator(frame, orient='horizontal')
separator.grid(column=col_left, columnspan=3, row=rownum, sticky=tk.EW, padx=5, pady=5) separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=5, pady=5)
rownum += 1 self.rownum += 1
# Teilenummer # Teilenummer
teilenummer_label = ttk.Label(frame, text="Teilenummer:") teilenummer_label = ttk.Label(frame, text="Teilenummer:")
teilenummer_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) teilenummer_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5)
self.teilenummer_text = tk.StringVar() self.teilenummer_text = tk.StringVar()
teilenummer_entry = ttk.Entry(frame, textvariable=self.teilenummer_text) teilenummer_entry = ttk.Entry(frame, textvariable=self.teilenummer_text)
teilenummer_entry.grid(column=col_left+1, row=rownum, sticky=tk.W, padx=5, pady=5) teilenummer_entry.grid(column=col_left+1, row=self.rownum, sticky=tk.W, padx=5, pady=5)
rownum += 1 self.rownum += 1
separator2 = ttk.Separator(frame, orient='horizontal') separator2 = ttk.Separator(frame, orient='horizontal')
separator2.grid(column=col_left, columnspan=3, row=rownum, sticky=tk.EW, padx=5, pady=5) separator2.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=5, pady=5)
rownum += 1 self.rownum += 1
return rownum
def get_data(self): def get_data(self):
@@ -116,7 +126,7 @@ class RightFrameLabels():
def data_to_model(self): def data_to_model(self):
data = self.get_data() data = self.get_data()
self.controller.set_gui_data(data) self.controller.set_gui_dict(data)
def data_from_model(self): def data_from_model(self):
data = self.controller.get_all_gui_data() data = self.controller.get_all_gui_data()
@@ -124,30 +134,38 @@ class RightFrameLabels():
self.teilenummer_text.set(data["teilenummer"]) self.teilenummer_text.set(data["teilenummer"])
class RightFramePDM(): class RightFramePDM():
def __init__(self, frame, controller): def __init__(self, frame, controller, nrow=0):
self.controller = controller self.controller = controller
self.frame = frame self.frame = frame
self.build_gui() self.build_gui()
self.data_from_model() self.data_from_model()
self.set_start_rwo(nrow)
def get_rows(self):
return self.rownum
def set_start_rwo(self, nrow):
if nrow < 0:
raise Exception("this row can not be set")
self.rownum = nrow
def build_gui(self): def build_gui(self):
frame = self.frame frame = self.frame
rownum = 4 self.rownum = 4
col_left = 0 col_left = 0
# pdmkategorie # pdmkategorie
pdmkategorie_label = ttk.Label(frame, text="PDM-Kategorie:" ) pdmkategorie_label = ttk.Label(frame, text="PDM-Kategorie:" )
pdmkategorie_label.grid(column=col_left, row=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'] = ["Baugruppe", "Einzelteil", "Kaufteil", "NichtSivas", "Normteil", "Schweissbaugruppe"]
pdmkategorie_combo['state'] = 'readonly' pdmkategorie_combo['state'] = 'readonly'
pdmkategorie_combo.bind('<<ComboboxSelected>>', self.combo_callbacks) # falls nötig pdmkategorie_combo.bind('<<ComboboxSelected>>', self.combo_callbacks) # falls nötig
pdmkategorie_combo.grid(column=col_left+2, row=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)
rownum += 1 self.rownum += 1
# Neuaufbau # Neuaufbau
neuaufbau_label = ttk.Label(frame, text="Neuaufbau:") neuaufbau_label = ttk.Label(frame, text="Neuaufbau:")
neuaufbau_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) neuaufbau_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5)
self.neuaufbau = None self.neuaufbau = None
neuaufbau_checkbutton = ttk.Checkbutton(frame, neuaufbau_checkbutton = ttk.Checkbutton(frame,
@@ -155,40 +173,39 @@ class RightFramePDM():
variable=self.neuaufbau, variable=self.neuaufbau,
onvalue="True", onvalue="True",
offvalue="False") offvalue="False")
neuaufbau_checkbutton.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) neuaufbau_checkbutton.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5)
rownum += 1 self.rownum += 1
# Lebenszyklusstatus # Lebenszyklusstatus
lebenszyklusstatus_label = ttk.Label(frame, text="Lebenszyklusstatus:") lebenszyklusstatus_label = ttk.Label(frame, text="Lebenszyklusstatus:")
lebenszyklusstatus_label.grid(column=col_left, row=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'] = ["Serie", "Prototyp"]
lebenszyklusstatus_combo['state'] = 'readonly' lebenszyklusstatus_combo['state'] = 'readonly'
lebenszyklusstatus_combo.bind('<<ComboboxSelected>>', self.combo_callbacks) lebenszyklusstatus_combo.bind('<<ComboboxSelected>>', self.combo_callbacks)
lebenszyklusstatus_combo.grid(column=col_left+2, row=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)
rownum += 1 self.rownum += 1
# aus Halbzeug # aus Halbzeug
halbzeug_label = ttk.Label(frame, text="aus Halbzeug:") halbzeug_label = ttk.Label(frame, text="aus Halbzeug:")
halbzeug_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) halbzeug_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5)
self.aus_halbzeug_neu = None self.aus_halbzeug_neu = None
aushalbzeug_checkbuttonr = ttk.Checkbutton(frame, aushalbzeug_checkbuttonr = ttk.Checkbutton(frame,
text='neu', text='neu',
variable=self.aus_halbzeug_neu, variable=self.aus_halbzeug_neu,
onvalue="True", onvalue="True",
offvalue="False") offvalue="False")
aushalbzeug_checkbuttonr.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) aushalbzeug_checkbuttonr.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5)
rownum += 1 self.rownum += 1
# Zusatzinformationen # Zusatzinformationen
zusatzinfos_label = ttk.Label(frame, text="Zusatzinformationen:") zusatzinfos_label = ttk.Label(frame, text="Zusatzinformationen:")
zusatzinfos_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5) zusatzinfos_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=5, pady=5)
self.zusatzinfos_text = tk.StringVar() self.zusatzinfos_text = tk.StringVar()
zusatzinfos_entry = ttk.Entry(frame, textvariable=self.zusatzinfos_text) zusatzinfos_entry = ttk.Entry(frame, textvariable=self.zusatzinfos_text)
zusatzinfos_entry.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5) zusatzinfos_entry.grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=5, pady=5)
rownum += 1 self.rownum += 1
return rownum
def get_data(self): def get_data(self):
return { return {
@@ -201,7 +218,10 @@ class RightFramePDM():
def data_to_model(self): def data_to_model(self):
data = self.get_data() data = self.get_data()
self.controller.set_gui_data(data) self.controller.set_gui_dict(data)
def data_to_model(self, key, value):
self.controller.set_gui_data(key, value)
def data_from_model(self): def data_from_model(self):
data = self.controller.get_all_gui_data() data = self.controller.get_all_gui_data()
@@ -253,8 +273,16 @@ class App():
gridhdl = self.tv.get_handle() gridhdl = self.tv.get_handle()
gridhdl.grid(row=0, column=0, sticky=tk.NSEW) gridhdl.grid(row=0, column=0, sticky=tk.NSEW)
self.rf0 = RightFrameLabels(right_frame, controller) self.rf0 = RightFrameLabels(right_frame, controller, 0)
self.rf1 = RightFramePDM(right_frame, controller) nrows = self.rf0.get_rows()
self.rf1 = RightFramePDM(right_frame, controller, nrows)
nrows = self.rf1.get_rows()
#self.rf2 = RightFramePDM(right_frame, controller, nrows)
# TODO usw.
def update_view(self):
self.rf0.update_view()
self.rf1.update_view()
def mainloop(self): def mainloop(self):
+23 -4
View File
@@ -1,3 +1,4 @@
import json
class CadItem(): class CadItem():
""" """
This item contains all data for writing all necessary data to the solid edg cad file This item contains all data for writing all necessary data to the solid edg cad file
@@ -27,9 +28,19 @@ class CadItem():
"TOS_Trolley_Projekte", "TOS_Trolley_Omniflo", "TOS_Trolley_Projekte", "TOS_Trolley_Omniflo",
"TOS_Trolley_Spinnerei", "TOS_Trolley_ILS", "Änderungsbeschreibung", "TOS_Trolley_Spinnerei", "TOS_Trolley_ILS", "Änderungsbeschreibung",
"Freigabevermerk", "ZusaetzlicheInformationen"] "Freigabevermerk", "ZusaetzlicheInformationen"]
gui_data_keys = [ "pdm_kategorie_neu", "neuaufbau", gui_data_keys = [ "teilenummer",
"lebenszyklus_status_neu", "aus_halbzeug_neu", "pdm_kategorie_neu",
"zusatzinfos_txt_neu"] "neuaufbau",
"lebenszyklus_status_neu",
"aus_halbzeug_neu",
"zusatzinfos_txt_neu",
"bezeichnung_sivas", "bezeichnung_neu",
"beschaffungsart_sivas","beschaffungsart_neu"
"mengeneinheit_sivas","mengeneinheit_neu"
"halbzeug_sivas","halbzeug_neu",
"tos_gruppe_sivas","tos_gruppe_neu"
# TODO siehe Layout Entwurf svg
]
def __init__(self, asm_id): def __init__(self, asm_id):
""" is initalized with its unique id""" """ is initalized with its unique id"""
@@ -48,6 +59,7 @@ class CadItem():
return self.prt_id return self.prt_id
def set_part_id(self, prt_id): def set_part_id(self, prt_id):
self.prt_id = prt_id self.prt_id = prt_id
self.gui_data["teilenummer"] = prt_id
def set_parent_children(self, parent_children_mapping): def set_parent_children(self, parent_children_mapping):
@@ -100,8 +112,15 @@ class CadItem():
return self.gui_data return self.gui_data
def load(): def load():
pass #try:
# with open('data.json', 'r') as f:
# self.model.todos = json.load(f)
#except Exception:
# pass
pass
def save(): def save():
#with open('data.json', 'w') as f:
# data = json.dump(self.model.data, f)
pass pass
class CadItemRepository: class CadItemRepository:
+3
View File
@@ -9,6 +9,9 @@ class Controller():
def __init__(self, model): def __init__(self, model):
self.model = model self.model = model
def update_view(self):
pass
def get_current_asm_id(self): def get_current_asm_id(self):
self.model.get_current_asm_id() self.model.get_current_asm_id()
def set_current_asm_id(self, asm_id): def set_current_asm_id(self, asm_id):
+1
View File
@@ -69,6 +69,7 @@ parent_children_mapping = {'400102196': ['400102125', '400102126', '400102130',
model = CadItem("400102196") model = CadItem("400102196")
model.set_part_id("400102142")
gui_data = { gui_data = {
"pdm_kategorie_neu":"Einzelteil", "pdm_kategorie_neu":"Einzelteil",
"neuaufbau" :"False", "neuaufbau" :"False",