diff --git a/CCDpanelsetup.py b/CCDpanelsetup.py index f653b40..875cd15 100644 --- a/CCDpanelsetup.py +++ b/CCDpanelsetup.py @@ -332,7 +332,8 @@ class buildpanel(tk.Frame): self.jfspkine2 = tk.Entry(self.jfslf1,textvariable=kin_repeats,width=4) self.jfspkine2.grid(row=1,column=1,sticky='e') - self.jfspdmath = tk.Button(self,text='Math..',fg="blue", command=lambda JFSphoto=Jfsphoto: self.jf.do_math(self)) + #self.jfspdmath = tk.Button(self,text='Math..',fg="blue", command=lambda JFSphoto=Jfsphoto: self.jf.do_math(self)) + self.jfspdmath = tk.Button(self,text='Math..',fg="blue", command=lambda JFSphoto=Jfsphoto: self.jf.do_methods(self)) self.jfspdmath.grid(row=save_row,column=4,sticky='e',padx=4) ### Reset changes from loading phometerfile diff --git a/JFSphoto.py b/JFSphoto.py index c266142..4119f0b 100644 --- a/JFSphoto.py +++ b/JFSphoto.py @@ -22,6 +22,35 @@ from mpl_toolkits.mplot3d import Axes3D from tkinter import ttk import CCDpanelsetup as panel ####################################### object +class Messurement(object): + + def __init__(self,data,step): + split = data.split(',') + self.name = 'Messure '+str(split[0]) + self.absorbanz = split[1] + self.conc = int(split[0])*float(step) + print(self.conc) + +class Methods(object) : + + def __init__(self,name,data): + self.messures = [] + self.name = name + split = data.split('|') + first = True + for s in split: + if first==True: + first= False + m = s.split(',') + self.id =m[0] + self.nm = m[1] + self.units = m[2] + self.step = m[5] + self.final = m[6] + else: + self.messures.append(Messurement(s,float(self.final)/int(self.step))) + + class Jfsphoto (object): @@ -59,6 +88,8 @@ class Jfsphoto (object): ######### jfs math self.ok = tk.IntVar() self.ok.set(0) + ######### jfs methods + self.methods = [] def do_calibrate(self): win = tk.Toplevel() @@ -283,6 +314,7 @@ class Jfsphoto (object): self.baseline_checked.set(0) self.darkline_checked.set(0) self.nm_checked.set(0) + def conf_write(self): config = ConfigParser() @@ -308,6 +340,11 @@ class Jfsphoto (object): self.nm_step = float(config.get('main','nm_step',fallback='0')) self.tnm_step.set(config.get('main','nm_step',fallback='0')) self.set_nm_scale() + if 'methods' in config.sections(): + for i in config['methods']: + s = config.get('methods',i) + #print(i,s) + self.methods.append(Methods(i,s)) except IOError: print("By the great otter!","No config.ini file") @@ -486,21 +523,25 @@ class Jfsphoto (object): def do_methods(self,panel): print(panel.SHvalue.get()) + + win = tk.Toplevel() tree = ttk.Treeview(win) tree.grid(column=0,row=0) - tree["columns"]=('id','nm','konz','interval','last') + tree["columns"]=('id','nm','konz','absorbanz','interval','last') tree.column("#0",width=100,minwidth=100,stretch=tk.NO) #tree.column("name",width=50,minwidth=50,stretch=tk.NO) tree.column("id",width=20,minwidth=20,stretch=tk.NO) tree.column("nm",width=40,minwidth=40,stretch=tk.NO) tree.column("konz",width=60,minwidth=60,stretch=tk.NO) + tree.column("absorbanz",width=60,minwidth=60,stretch=tk.NO) tree.column("interval",width=60,minwidth=60,stretch=tk.NO) - tree.column("last",width=60,minwidth=60,stretch=tk.NO) + tree.column("last",width=80,minwidth=80,stretch=tk.NO) tree.heading("#0",text='Methode',anchor=tk.W) tree.heading("id",text='ID',anchor=tk.W) tree.heading("nm",text='[nm]',anchor=tk.W) tree.heading("konz",text='conc',anchor=tk.W) + tree.heading("absorbanz",text="Absorbanz",anchor=tk.W) tree.heading("interval",text='intervall',anchor=tk.W) tree.heading("last",text='last conc',anchor=tk.W) @@ -513,8 +554,17 @@ class Jfsphoto (object): e4.set(einheiten[2]) e5 = tk.IntVar() e6 = tk.IntVar() - def save_method(): - tree.insert("",'end',e1.get(),text=e1.get(),values=(e2.get(),e3.get(),e4.get(),e5.get(),e6.get())) + e7 = tk.StringVar() + e7.set('0.0') + + def load_tree(): + for a in self.methods: + tree.insert("",'end',a.name,text=a.name,values=(a.id,a.nm,a.units,e7.get(),a.step,a.final)) + for b in a.messures: + tree.insert(a.name,'end',b.name,text=b.name,values=('','',b.conc,b.absorbanz)) + + def add_method(): + tree.insert("",'end',e1.get(),text=e1.get(),values=(e2.get(),e3.get(),e4.get(),e7.get(),e5.get(),e6.get())) stp = e6.get()/e5.get() for i in range(1,e5.get()+1): tree.insert(e1.get(),'end',text='Messure '+str(i),values=(i,'','','',stp * (i))) @@ -547,8 +597,10 @@ class Jfsphoto (object): l6.grid(column=0,row=5,sticky='w') le6 =tk.Entry(lf1,textvariable=e6,width=5) le6.grid(column=1,row=5,sticky='w') - lb1 = tk.Button(lf1,text='Save',command=save_method) + lb1 = tk.Button(lf1,text='Add Method',command=add_method) lb1.grid(column=0,row=6,sticky='w') + + load_tree() # def cb(event): # print(tree.selection()) # #panel.bcollect.invoke() diff --git a/config.ini b/config.ini index 6be8816..c414b5d 100644 --- a/config.ini +++ b/config.ini @@ -2,4 +2,6 @@ nm_left = 320.0 nm_right = 811.0 nm_step = 0.13279 +[methods] +crystal : 1,530,mymol,0,0,5,20|1,1.23|2,2.4|3,3.65|4,4.8|5,6.05