# -*- coding: iso-8859-15 -*- import Tkinter as tk from Ewindow import * from numerical import * ############################################################################## # Arbitrary parameters to declare dictionaries param = dict(dedx=192. ,Theta_out=70., dW2dx=20740., E0= 100000., Theta_in=0., FWHM0=180.) ionb = dict(Z=1, mass=1.0079) OFlabentries = list() ############################################################################## # Calculation callback # Get parameters def init_calc(): global modelvar param['dedx'] = float(OFlabentries[9].get()) param['dW2dx'] = float(OFlabentries[10].get()) param['Theta_out'] = float(OFlabentries[11].get()) param['Theta_in'] = float(OFlabentries[12].get()) param['E0'] = float(OFlabentries[21].get()) param['FWHM0'] = float(OFlabentries[13].get()) ionb['mass'] = float(OFlabentries[22].get()) ionb['Z'] = float(OFlabentries[23].get()) if str(modevar.get()) == 'IONS': if str(distvar.get()) == 'drawing': for i in range(len(Edict)): Edict[i]['dist'] = np.loadtxt(Edict[i]['symbol']+".prof") spectro(param, str(modelvar.get()), ionb, OFlabentries, int(LSvar.get()), int(CGvar.get())) elif str(distvar.get()) == 'layer': spectrolayer(param, str(modelvar.get()), ionb, OFlabentries, int(LSvar.get()), int(CGvar.get())) elif str(modevar.get()) == 'RRNA': return 0 ############################################################################## # Main window root = tk.Tk() root.minsize(670,550) root.title('Open Flatus') root.geometry('670x500+200+400') ############################################################################## # Frames MasterFrame1 = tk.Frame(root) MasterFrame1.pack(side='left') MasterFrame2 = tk.Frame(root) MasterFrame2.pack(side='top') Label0 = tk.LabelFrame(MasterFrame1, text = 'Experiment', relief='raised', bd=2) Label0.pack(side='top') Label2 = tk.LabelFrame(MasterFrame1, text = 'Parameters', relief='raised', bd=2) Label2.pack(side='top') Label3 = tk.LabelFrame(MasterFrame1, text = 'Ion parameters', relief='raised', bd=2) Label3.pack(side='top') Label4 = tk.LabelFrame(MasterFrame1, text = 'Energy loss model', relief='raised', bd=2) Label4.pack(side='top') # Elements frame Label1 = tk.Frame(MasterFrame2) Label1.pack(side='top') Pframel = tk.Frame(Label2) Pframel.pack(side='left') Pframee = tk.Frame(Label2) Pframee.pack(side='right') Iframel = tk.Frame(Label3, width=9) Iframel.pack(side='left') Iframee = tk.Frame(Label3, width=11) Iframee.pack(side='right') ############################################################################## # Parameters # Labels // Entries numbers: # 0 // 9 = dedx # 1 // 10 = dW2dx # 2 // 11 = theta out # 3 // 12 = theta in # 4 // 13 = FWHM0 # 5 // 14 = Energy min # 6 // 15 = Energy max # 7 // 16 = Energy step # 8 // 17 = Depht step OFlabentries.insert(0, tk.Label(Pframel, width=9, text='dƐ/dx', pady=2)) OFlabentries.insert(1, tk.Label(Pframel, width=9, text='dω²/dx', pady=2)) OFlabentries.insert(2, tk.Label(Pframel, width=9, text='θ out', pady=2)) OFlabentries.insert(3, tk.Label(Pframel, width=9, text='θ in', pady=2)) OFlabentries.insert(4, tk.Label(Pframel, width=9, text='FWHM0', pady=2)) OFlabentries.insert(5, tk.Label(Pframel, width=9, text='Emin', pady=2)) OFlabentries.insert(6, tk.Label(Pframel, width=9, text='Emax', pady=2)) OFlabentries.insert(7, tk.Label(Pframel, width=9, text='Estep', pady=2)) OFlabentries.insert(8, tk.Label(Pframel, width=9, text='Depth step', pady=2)) for n in range(9): OFlabentries[n].pack() # Entries for n in arange(9,18): OFlabentries.insert(n, tk.Entry(Pframee, width=11)) OFlabentries[n].pack() #Ion # Labels // Entries numbers: # 18 // 21 = Initial Energy # 19 // 22 = mass # 20 // 23 = Z (atomic number) OFlabentries.insert(18, tk.Label(Iframel, width=9, text='Energy')) OFlabentries.insert(19, tk.Label(Iframel, width=9, text='Mass')) OFlabentries.insert(20, tk.Label(Iframel, width=9, text='Z')) for n in arange(18,21): OFlabentries[n].pack() for n in arange(21,24): OFlabentries.insert(n, tk.Entry(Iframee, width=11)) OFlabentries[n].pack() ############################################################################## #Initial values OFlabentries[9].insert(0,param['dedx']) OFlabentries[10].insert(0,param['dW2dx']) OFlabentries[11].insert(0,param['Theta_out']) OFlabentries[12].insert(0,param['Theta_in']) OFlabentries[13].insert(0,param['FWHM0']) OFlabentries[14].insert(0,70000) OFlabentries[15].insert(0,100000) OFlabentries[16].insert(0,20) OFlabentries[17].insert(0,0.01) OFlabentries[21].insert(0,param['E0']) OFlabentries[22].insert(0, ionb['mass']) OFlabentries[23].insert(0, ionb['Z']) ############################################################################## # Energy loss models modevar = tk.StringVar() modevar.set('IONS') modelvar = tk.StringVar() R1 = tk.Radiobutton(Label4, text="Gaussian", variable=modelvar, value='gaussiana') R1.pack() R2 = tk.Radiobutton(Label4, text="Bessel", variable=modelvar, value='bessel') R2.pack() R2.select() ############################################################################## # Line shape/Convolve gaussian checkbox LSvar = tk.IntVar() CGvar = tk.IntVar() C1 = tk.Checkbutton(Label4, text="Use Line Shape", variable=LSvar) C1.pack() C1.select() C2 = tk.Checkbutton(Label4, text="Resolution Convolve", variable=CGvar) C2.pack() C2.select() ############################################################################## # Calculate and Exit buttons CalcButton = tk.Button(Label4, text = 'Calculate', command = init_calc, bd=4, width=17, height=2) CalcButton.pack() ############################################################################## # Elements callback distvar = tk.StringVar() distvar.set('drawing') ewin_build(Label1, OFlabentries, root, CalcButton, distvar, modevar, Label0) ############################################################################## root.mainloop() ##############################################################################