weiteren Abschnitt zur GUI gebaut
This commit is contained in:
+62
-78
@@ -10,7 +10,7 @@ from caditem import CadItem
|
|||||||
|
|
||||||
|
|
||||||
class TreeView():
|
class TreeView():
|
||||||
def __init__(self, frame):
|
def __init__(self, frame, 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)
|
||||||
@@ -67,17 +67,72 @@ class TreeView():
|
|||||||
def get_handle(self):
|
def get_handle(self):
|
||||||
return self.tree
|
return self.tree
|
||||||
|
|
||||||
|
class RightFrameLabels():
|
||||||
|
def __init__(self, frame, controller):
|
||||||
|
self.controller = controller
|
||||||
|
self.frame = frame
|
||||||
|
self.build_gui()
|
||||||
|
self.data_from_model()
|
||||||
|
|
||||||
|
def build_gui(self):
|
||||||
|
frame = self.frame
|
||||||
|
rownum = 0
|
||||||
|
col_left = 0
|
||||||
|
# Feld, SIVAS-Werte, Überschriebene Werte
|
||||||
|
feld_label = ttk.Label(frame, text="Feld" )
|
||||||
|
feld_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5)
|
||||||
|
Sivas_label = ttk.Label(frame, text="SIVAS-Werte" )
|
||||||
|
Sivas_label.grid(column=col_left+1, row=rownum, sticky=tk.W, padx=5, pady=5)
|
||||||
|
transwritten_label = ttk.Label(frame, text="Überschriebene Werte" )
|
||||||
|
transwritten_label.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5)
|
||||||
|
|
||||||
|
feld_label.configure(font=("Helvetica", 16))
|
||||||
|
Sivas_label.configure(font=("Helvetica",16))
|
||||||
|
transwritten_label.configure(font=("Helvetica",16))
|
||||||
|
rownum += 1
|
||||||
|
|
||||||
|
separator = ttk.Separator(frame, orient='horizontal')
|
||||||
|
separator.grid(column=col_left, columnspan=3, row=rownum, sticky=tk.EW, padx=5, pady=5)
|
||||||
|
rownum += 1
|
||||||
|
|
||||||
|
# Teilenummer
|
||||||
|
teilenummer_label = ttk.Label(frame, text="Teilenummer:")
|
||||||
|
teilenummer_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5)
|
||||||
|
self.teilenummer_text = tk.StringVar()
|
||||||
|
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)
|
||||||
|
rownum += 1
|
||||||
|
separator2 = ttk.Separator(frame, orient='horizontal')
|
||||||
|
separator2.grid(column=col_left, columnspan=3, row=rownum, sticky=tk.EW, padx=5, pady=5)
|
||||||
|
rownum += 1
|
||||||
|
|
||||||
|
return rownum
|
||||||
|
|
||||||
|
|
||||||
|
def get_data(self):
|
||||||
|
return {
|
||||||
|
"teilennummer": self.teilenummer_text.get(),
|
||||||
|
}
|
||||||
|
|
||||||
|
def data_to_model(self):
|
||||||
|
data = self.get_data()
|
||||||
|
self.controller.set_gui_data(data)
|
||||||
|
|
||||||
|
def data_from_model(self):
|
||||||
|
data = self.controller.get_all_gui_data()
|
||||||
|
if 'teilenummer' in data:
|
||||||
|
self.teilenummer_text.set(data["teilenummer"])
|
||||||
|
|
||||||
class RightFramePDM():
|
class RightFramePDM():
|
||||||
def __init__(self, frame, controller):
|
def __init__(self, frame, controller):
|
||||||
self.controller = controller
|
self.controller = controller
|
||||||
self.frame = frame
|
self.frame = frame
|
||||||
self.build_gui()
|
self.build_gui()
|
||||||
self.from_model()
|
self.data_from_model()
|
||||||
|
|
||||||
def build_gui(self):
|
def build_gui(self):
|
||||||
frame = self.frame
|
frame = self.frame
|
||||||
rownum = 0
|
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:" )
|
||||||
@@ -144,11 +199,11 @@ class RightFramePDM():
|
|||||||
"zusatzinfos_txt_neu": self.zusatzinfos_text.get(),
|
"zusatzinfos_txt_neu": self.zusatzinfos_text.get(),
|
||||||
}
|
}
|
||||||
|
|
||||||
def 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_data(data)
|
||||||
|
|
||||||
def from_model(self):
|
def data_from_model(self):
|
||||||
data = self.controller.get_all_gui_data()
|
data = self.controller.get_all_gui_data()
|
||||||
if 'pdm_kategorie_neu' in data:
|
if 'pdm_kategorie_neu' in data:
|
||||||
self.pdm_category.set(data["pdm_kategorie_neu"])
|
self.pdm_category.set(data["pdm_kategorie_neu"])
|
||||||
@@ -187,96 +242,25 @@ class App():
|
|||||||
right_frame = ttk.Frame(self.root, width=650, height=800)
|
right_frame = ttk.Frame(self.root, width=650, height=800)
|
||||||
right_frame.grid(row=0, column=1, padx=10, pady=5)
|
right_frame.grid(row=0, column=1, padx=10, pady=5)
|
||||||
|
|
||||||
|
|
||||||
style = ttk.Style(self.root)
|
style = ttk.Style(self.root)
|
||||||
style.theme_use('classic')
|
style.theme_use('classic')
|
||||||
|
|
||||||
current_id = self.controller.get_current_asm_id()
|
current_id = self.controller.get_current_asm_id()
|
||||||
parent_children_mapping = self.controller.get_parent_children()
|
parent_children_mapping = self.controller.get_parent_children()
|
||||||
red_ids = self.controller.get_red_ids()
|
red_ids = self.controller.get_red_ids()
|
||||||
self.tv = TreeView(left_frame)
|
self.tv = TreeView(left_frame, controller)
|
||||||
self.tv.create(parent_children_mapping, red_ids)
|
self.tv.create(parent_children_mapping, red_ids)
|
||||||
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.rf1 = RightFramePDM(right_frame, controller)
|
self.rf1 = RightFramePDM(right_frame, controller)
|
||||||
#self.create_widgets(right_frame)
|
|
||||||
|
|
||||||
|
|
||||||
def create_widgets(self, frame):
|
|
||||||
rownum = 0
|
|
||||||
col_left = 0
|
|
||||||
# pdmkategorie
|
|
||||||
pdmkategorie_label = ttk.Label(frame, text="PDM-Kategorie:" )
|
|
||||||
pdmkategorie_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
pdmkategorie_entry = ttk.Entry(frame)
|
|
||||||
pdmkategorie_entry.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
rownum += 1
|
|
||||||
|
|
||||||
# Neuaufbau
|
|
||||||
neuaufbau_label = ttk.Label(frame, text="Neuaufbau:")
|
|
||||||
neuaufbau_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
|
|
||||||
self.neuaufbau = None
|
|
||||||
neuaufbau_checkbutton = ttk.Checkbutton(frame,
|
|
||||||
text='ja',
|
|
||||||
command=self.var_changed("neuaufbau"),
|
|
||||||
variable=self.neuaufbau,
|
|
||||||
onvalue=True,
|
|
||||||
offvalue=False)
|
|
||||||
neuaufbau_checkbutton.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
rownum += 1
|
|
||||||
|
|
||||||
# Lebenszyklusstatus
|
|
||||||
lebenszyklusstatus_label = ttk.Label(frame, text="Lebenszyklusstatus:")
|
|
||||||
lebenszyklusstatus_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
lebenszyklusstatus_entry = ttk.Entry(frame, show="*")
|
|
||||||
lebenszyklusstatus_entry.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
rownum += 1
|
|
||||||
|
|
||||||
halbzeug_label = ttk.Label(frame, text="Halbzeug:")
|
|
||||||
halbzeug_label.grid(column=col_left, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
self.aus_halbzeug_sivas = None
|
|
||||||
aushalbzeug_checkbutton_sivas = ttk.Checkbutton(frame,
|
|
||||||
text='aus Sivas',
|
|
||||||
command=self.var_changed("aus_halbzeug_sivas"),
|
|
||||||
variable=self.aus_halbzeug_sivas,
|
|
||||||
onvalue=True,
|
|
||||||
offvalue=False)
|
|
||||||
aushalbzeug_checkbutton_sivas.grid(column=col_left+1, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
self.aus_halbzeug_neu = None
|
|
||||||
aushalbzeug_checkbuttonr = ttk.Checkbutton(frame,
|
|
||||||
text='neu',
|
|
||||||
command=self.var_changed("aus_halbzeug_neu"),
|
|
||||||
variable=self.aus_halbzeug_neu,
|
|
||||||
onvalue=True,
|
|
||||||
offvalue=False)
|
|
||||||
aushalbzeug_checkbuttonr.grid(column=col_left+2, row=rownum, sticky=tk.W, padx=5, pady=5)
|
|
||||||
rownum += 1
|
|
||||||
|
|
||||||
|
|
||||||
def mainloop(self):
|
def mainloop(self):
|
||||||
self.root.mainloop()
|
self.root.mainloop()
|
||||||
|
|
||||||
|
|
||||||
# class Navbar(tk.Frame): ...
|
|
||||||
# class Toolbar(tk.Frame): ...
|
|
||||||
# class Statusbar(tk.Frame): ...
|
|
||||||
# class Main(tk.Frame): ...
|
|
||||||
|
|
||||||
# class MainApp(tk.Frame):
|
|
||||||
# def __init__(self, parent, *args, **kwargs):
|
|
||||||
# tk.Frame.__init__(self, parent, *args, **kwargs)
|
|
||||||
# self.statusbar = Statusbar(self, ...)
|
|
||||||
# self.toolbar = Toolbar(self, ...)
|
|
||||||
# self.navbar = Navbar(self, ...)
|
|
||||||
# self.main = Main(self, ...)
|
|
||||||
|
|
||||||
# self.statusbar.pack(side="bottom", fill="x")
|
|
||||||
# self.toolbar.pack(side="top", fill="x")
|
|
||||||
# self.navbar.pack(side="left", fill="y")
|
|
||||||
# self.main.pack(side="right", fill="both", expand=True)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
""" using the Model-View-Controller (MVC) Pattern
|
""" using the Model-View-Controller (MVC) Pattern
|
||||||
|
|||||||
+26
-1
@@ -27,6 +27,9 @@ 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",
|
||||||
|
"lebenszyklus_status_neu", "aus_halbzeug_neu",
|
||||||
|
"zusatzinfos_txt_neu"]
|
||||||
|
|
||||||
def __init__(self, asm_id):
|
def __init__(self, asm_id):
|
||||||
""" is initalized with its unique id"""
|
""" is initalized with its unique id"""
|
||||||
@@ -62,7 +65,8 @@ class CadItem():
|
|||||||
def get_red_ids(self):
|
def get_red_ids(self):
|
||||||
return self.red_ids
|
return self.red_ids
|
||||||
|
|
||||||
def set_data(self, data:dict):
|
# Daten zum Impfen merken
|
||||||
|
def set_data_dict(self, data:dict):
|
||||||
for k,v in data:
|
for k,v in data:
|
||||||
self.set_data(k,v)
|
self.set_data(k,v)
|
||||||
def set_data(self, key, val):
|
def set_data(self, key, val):
|
||||||
@@ -72,7 +76,28 @@ class CadItem():
|
|||||||
self.data[key] = val
|
self.data[key] = val
|
||||||
|
|
||||||
def get_data(self, key):
|
def get_data(self, key):
|
||||||
|
""" gibt ein Datenstück zurück """
|
||||||
return self.data[key]
|
return self.data[key]
|
||||||
|
def get_all_data(self):
|
||||||
|
""" gibt alle enthaltenen Daten zurück """
|
||||||
|
return self.data
|
||||||
|
|
||||||
|
# Daten in der GUI
|
||||||
|
def set_gui_dict(self, data:dict):
|
||||||
|
""" setzt die Daten der GUI """
|
||||||
|
for k,v in data.items():
|
||||||
|
self.set_gui_data(k,v)
|
||||||
|
def set_gui_data(self, key, val):
|
||||||
|
""" merkt sich ein Datenatom für die GUI """
|
||||||
|
if key not in self.gui_data_keys:
|
||||||
|
raise Exception("this data can not be set"+ key)
|
||||||
|
else:
|
||||||
|
self.gui_data[key] = val
|
||||||
|
|
||||||
|
def get_gui_data(self, key):
|
||||||
|
return self.gui_data[key]
|
||||||
|
def get_all_gui_data(self):
|
||||||
|
return self.gui_data
|
||||||
|
|
||||||
def load():
|
def load():
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -23,8 +23,34 @@ class Controller():
|
|||||||
self.model.set_parent_children(parent_children_mapping)
|
self.model.set_parent_children(parent_children_mapping)
|
||||||
def get_parent_children(self):
|
def get_parent_children(self):
|
||||||
return self.model.get_parent_children()
|
return self.model.get_parent_children()
|
||||||
|
|
||||||
|
# merkt sich die reinen Daten zum Impfen
|
||||||
|
def set_data_dict(self, data:dict):
|
||||||
|
"""merken der Daten zum Impfen"""
|
||||||
|
for k,v in data:
|
||||||
|
self.set_data(k,v)
|
||||||
def set_data(self, key, value):
|
def set_data(self, key, value):
|
||||||
|
"""merken der Daten zum Impfen"""
|
||||||
self.model.set_data(key, value)
|
self.model.set_data(key, value)
|
||||||
|
|
||||||
|
def get_data(self, key):
|
||||||
|
return self.model.get_data(key)
|
||||||
|
def get_all_data(self):
|
||||||
|
return self.model.get_all_data()
|
||||||
|
|
||||||
|
# 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:
|
||||||
|
self.set_gui_data(k,v)
|
||||||
|
def set_gui_data(self, key, value):
|
||||||
|
"""merken der Eingaben des Nutzers der GUI """
|
||||||
|
self.model.set_gui_data(key, value)
|
||||||
|
|
||||||
|
def get_gui_data(self, key):
|
||||||
|
return self.model.get_gui_data(key)
|
||||||
|
def get_all_gui_data(self):
|
||||||
|
return self.model.get_all_gui_data()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
pass
|
pass
|
||||||
|
|||||||
+10
-2
@@ -69,10 +69,18 @@ parent_children_mapping = {'400102196': ['400102125', '400102126', '400102130',
|
|||||||
|
|
||||||
|
|
||||||
model = CadItem("400102196")
|
model = CadItem("400102196")
|
||||||
|
gui_data = {
|
||||||
|
"pdm_kategorie_neu":"Einzelteil",
|
||||||
|
"neuaufbau" :"False",
|
||||||
|
"lebenszyklus_status_neu" :"Serie",
|
||||||
|
"neuaufbau" :"",
|
||||||
|
"aus_halbzeug_neu" :"True",
|
||||||
|
}
|
||||||
|
model.set_gui_dict(gui_data)
|
||||||
|
model.set_parent_children(parent_children_mapping)
|
||||||
|
model.set_red_ids(red_ids)
|
||||||
|
|
||||||
controller = Controller(model)
|
controller = Controller(model)
|
||||||
controller.set_parent_children(parent_children_mapping)
|
|
||||||
controller.set_red_ids(red_ids)
|
|
||||||
|
|
||||||
root = tk.Tk()
|
root = tk.Tk()
|
||||||
app = App(root, controller)
|
app = App(root, controller)
|
||||||
|
|||||||
Reference in New Issue
Block a user