# -*- coding: iso-8859-15 -*- import Tkinter as tk from Ewindow import * from numpy import * from spectro 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()) data=spectro_espalhamento(float(EntryEmin.get()),float(EntryEmax.get()),20) data.sweepelements(param, str(modelvar.get()), ionb) data.plot() ####################################### # Main window root = tk.Tk() root.minsize(385,260) root.title('Open Flatus') root.geometry('385x260+200+400') ####################################### # Elements window ewin = tk.Tk() ewin.minsize(600,400) 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=8) Iframel.pack(side='left') Iframee = tk.Frame(Label3, width=12) Iframee.pack(side='right') ####################################### # Parameters # Labels Labeldedx = tk.Label(Pframel, width=8, text='dƐ/dx') LabeldW2dx = tk.Label(Pframel, width=8, text='dω²/dx') LabelT_out = tk.Label(Pframel, width=8, text='θ out') LabelT_in = tk.Label(Pframel, width=8, text='θ in') LabelE0 = tk.Label(Pframel, width=8, text='E0') LabelFWHM0 = tk.Label(Pframel, width=8, text='FWHM0') LabelEmin = tk.Label(Pframel, width=8, text='Emin') LabelEmax = tk.Label(Pframel, width=8, text='Emax') Labeldedx.pack() LabeldW2dx.pack() LabelT_out.pack() LabelT_in.pack() LabelE0.pack() LabelFWHM0.pack() LabelEmin.pack() LabelEmax.pack() # Entries Entrydedx = tk.Entry(Pframee, width=12) EntrydW2dx = tk.Entry(Pframee, width=12) EntryT_out = tk.Entry(Pframee, width=12) EntryT_in = tk.Entry(Pframee, width=12) EntryE0 = tk.Entry(Pframee, width=12) EntryFWHM0 = tk.Entry(Pframee, width=12) EntryEmin = tk.Entry(Pframee, width=12) EntryEmax = tk.Entry(Pframee, width=12) Entrydedx.pack() EntrydW2dx.pack() EntryT_out.pack() EntryT_in.pack() EntryE0.pack() EntryFWHM0.pack() EntryEmin.pack() EntryEmax.pack() #Ion Labelionmass = tk.Label(Iframel, width=8, text='Mass') LabelionZ = tk.Label(Iframel, width=8, text='Z') Labelionmass.pack() LabelionZ.pack() Entryionmass = tk.Entry(Iframee, width=12) EntryionZ = tk.Entry(Iframee, width=12) 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) 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() ####################################### 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) ####################################### data=spectro_espalhamento(float(EntryEmin.get()),float(EntryEmax.get()),20) data.sweepelements(param, 'bessel', ionb) data.plot() root.mainloop() ewin.mainloop() #######################################