# -*- coding: iso-8859-15 -*- import Tkinter as tk from Ewindow import * from numerical import * import sys ############################################################################## # Initial parameters param = dict(dedx=192. ,Theta_out=70., dW2dx=20740., E0= 100000., Theta_in=0.) #, FWHM0=180.) ionb = dict(Z=1, mass=1.0079) ############################################################################## # Calculation callback # Defines parameters def init_calc(): global modelvar param['dedx'] = float(Entrydedx.get()) param['dW2dx'] = float(EntrydW2dx.get()) param['Theta_out'] = float(EntryT_out.get()) param['Theta_in'] = float(EntryT_in.get()) param['E0'] = float(EntryE0.get()) #param['FWHM0'] = float(EntryFWHM0.get()) ionb['mass'] = float(Entryionmass.get()) ionb['Z'] = float(EntryionZ.get()) spectro(param, str(modelvar.get()), ionb, float(EntryEmin.get()),float(EntryEmax.get()), float(EntryEstep.get()), float(EntryDstep.get()), int(LSvar.get()) ) ############################################################################## # Main window root = tk.Tk() root.minsize(400,290) root.title('Open Flatus') root.geometry('400x290+200+400') ############################################################################## # Elements window ewin = tk.Tk() ewin.minsize(810,550) ewin.title('Elements') ewin.geometry('600x400+600+400') ############################################################################## # Frames MasterFrame1 = tk.Frame(root) MasterFrame1.pack(side='left') 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='left') Label4 = tk.LabelFrame(root, text = 'Energy loss model', relief='raised', bd=2) Label4.pack(side='right') 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 Labeldedx = tk.Label(Pframel, width=9, text='dƐ/dx', pady=2) LabeldW2dx = tk.Label(Pframel, width=9, text='dω²/dx', pady=2) LabelT_out = tk.Label(Pframel, width=9, text='θ out', pady=2) LabelT_in = tk.Label(Pframel, width=9, text='θ in', pady=2) #LabelFWHM0 = tk.Label(Pframel, width=9, text='FWHM0') LabelEmin = tk.Label(Pframel, width=9, text='Emin', pady=2) LabelEmax = tk.Label(Pframel, width=9, text='Emax', pady=2) LabelEstep = tk.Label(Pframel, width=9, text='Estep', pady=2) LabelDstep = tk.Label(Pframel, width=9, text='Depht step', pady=2) Labeldedx.pack() LabeldW2dx.pack() LabelT_out.pack() LabelT_in.pack() #LabelFWHM0.pack() LabelEmin.pack() LabelEmax.pack() LabelEstep.pack() LabelDstep.pack() # Entries Entrydedx = tk.Entry(Pframee, width=11) EntrydW2dx = tk.Entry(Pframee, width=11) EntryT_out = tk.Entry(Pframee, width=11) EntryT_in = tk.Entry(Pframee, width=11) #EntryFWHM0 = tk.Entry(Pframee, width=11) EntryEmin = tk.Entry(Pframee, width=11) EntryEmax = tk.Entry(Pframee, width=11) EntryEstep = tk.Entry(Pframee, width=11) EntryDstep = tk.Entry(Pframee, width=11) Entrydedx.pack() EntrydW2dx.pack() EntryT_out.pack() EntryT_in.pack() #EntryFWHM0.pack() EntryEmin.pack() EntryEmax.pack() EntryEstep.pack() EntryDstep.pack() #Ion LabelE0 = tk.Label(Iframel, width=9, text='Energy') Labelionmass = tk.Label(Iframel, width=9, text='Mass') LabelionZ = tk.Label(Iframel, width=9, text='Z') LabelE0.pack() Labelionmass.pack() LabelionZ.pack() EntryE0 = tk.Entry(Iframee, width=11) Entryionmass = tk.Entry(Iframee, width=11) EntryionZ = tk.Entry(Iframee, width=11) EntryE0.pack() Entryionmass.pack() EntryionZ.pack() #Initial values Entrydedx.insert(0,param['dedx']) EntrydW2dx.insert(0,param['dW2dx']) EntryT_out.insert(0,param['Theta_out']) EntryT_in.insert(0,param['Theta_in']) EntryE0.insert(0,param['E0']) #EntryFWHM0.insert(0,param['FWHM0']) EntryEmin.insert(0,70000) EntryEmax.insert(0,100000) EntryEstep.insert(0,20) EntryDstep.insert(0,0.01) Entryionmass.insert(0, ionb['mass']) EntryionZ.insert(0, ionb['Z']) ############################################################################## # Energy loss models 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() ############################################################################## # Line shape checkbox LSvar = tk.IntVar() C1 = tk.Checkbutton(Label4, text="Use Line Shape", variable=LSvar) C1.pack() ############################################################################## CalcButton = tk.Button(Label4, text = 'Calculate', command = init_calc, bd=4, width=20, height=4) CalcButton.pack() ExitButton = tk.Button(Label4, text = 'Exit', command = sys.exit, bd=4, width=20, height=2) ExitButton.pack(side='bottom') ############################################################################## # Elements callback ewin_build(ewin, 15, float(EntryDstep.get())) ############################################################################## spectro(param, 'gaussiana', ionb, float(EntryEmin.get()), float(EntryEmax.get()), float(EntryEstep.get()), float(EntryDstep.get()), int(LSvar.get()) ) root.mainloop() ewin.mainloop() ##############################################################################