def __init__(self, mainwindow, cell): tk.Toplevel.__init__(self, mainwindow) self.main_frame = tkinter.ttk.Frame(self) self.main_frame.grid(sticky='nsew') self.mainwindow = mainwindow self.project = self.mainwindow.projects[self.mainwindow.currentprojectid] self.bfpp = cell.bfpp self.cell = cell self.title(self.cell.treetitle + ' Band Fit Window') # -------------------------------------------------- VARIABLES ------------------------------------------------- self.label1 = tk.Label(self.main_frame, text='Band fit parameters', font='-weight bold') self.band_frame = tkinter.ttk.LabelFrame(self.main_frame, labelwidget=self.label1) self.band_frame.grid(row=2, column=0, pady=3, sticky='nsew') self.hs_kpoints_var = tk.StringVar(value=','.join(self.bfpp.hs_kpoints_names)) # High Symmetry K-points hs_kpoints_frame = tkinter.ttk.Frame(self.band_frame) hs_kpoints_frame.grid(pady=3, sticky='nsew') tkinter.ttk.Label(hs_kpoints_frame, text='High symmetry K-points (comma-separated)').grid(sticky='nsew') tkinter.ttk.Entry(hs_kpoints_frame, textvariable=self.hs_kpoints_var, width=20).grid(sticky='nsew') # Energy range self.vbm_range = tu.RangeFrame(self.band_frame, self.bfpp.bands_fit['VBM'].xfitmin, self.bfpp.bands_fit['VBM'].xfitmax, 'VBM fit range', '', width=6) self.vbm_range.grid(sticky='nsew') self.cbm_range = tu.RangeFrame(self.band_frame, self.bfpp.bands_fit['CBM'].xfitmin, self.bfpp.bands_fit['CBM'].xfitmax, 'CBM fit range', '', width=6) self.cbm_range.grid(sticky='nsew') # ---------------------------------------------- DISPLAY PARAMS ------------------------------------------------ self.display_param = tu.DisplayParametersFrame(self.main_frame, 'High-symmetry K-points', 'Energy', self.bfpp) self.display_param.frame.grid(row=3, column=0, pady=3, sticky='nsew') # --------------------------------------------------- BUTTONS -------------------------------------------------- buttons_frame = tkinter.ttk.Frame(self.main_frame) buttons_frame.grid(pady=3, sticky='nsew') tkinter.ttk.Button(buttons_frame, text='Apply', command=self.save).grid(row=0, column=0, padx=5) tkinter.ttk.Button(buttons_frame, text='OK', command=lambda: self.save(close=True)).grid(row=0, column=1, padx=5) tkinter.ttk.Button(buttons_frame, text='Cancel', command=self.destroy).grid(row=0, column=2, padx=5)
def __init__(self, mainwindow, project, opp): tk.Toplevel.__init__(self, mainwindow) self.mainwindow = mainwindow self.project = project self.cell = self.project.cells[self.mainwindow.currentitemid].optical_indices self.opp = opp self.resizable(False, False) self.maxsize(width=self.winfo_screenwidth(), height=4*self.winfo_screenheight()//5) self.main_frame = tkinter.ttk.Frame(self) self.main_frame.grid(sticky='nsew') self.contain_frame = tu.ScrollableTableFrame(self.main_frame, '', []).interior self.title('Optical indices Plot Parameters Edition Window') # --------------------------------------------------- OPP name ------------------------------------------------- self.label0 = tk.Label(self.contain_frame, text='Plot Parameters Name', pady=10) self.nameframe = tk.Frame(self.contain_frame) self.nameframe.grid(row=1, column=0) namelist = [opp.name for opp in list(self.project.pp['opp'].values())] self.oppname = tkinter.ttk.Combobox(self.nameframe, values=namelist, width=40) self.oppname.set(self.opp.name) self.oppname.bind("<<ComboboxSelected>>", self.opp_select) self.label0.grid(row=0, column=0) self.oppname.grid(row=1, column=0) tk.ttk.Button(self.nameframe, text='Save as new parameters', command=self.opp_create).grid(row=1, column=1) # Data ID oplabel = tk.Label(self.contain_frame, text='Optical properties to plot', font=('', '16', 'bold')) self.op_frame = tkinter.ttk.LabelFrame(self.contain_frame, labelwidget=oplabel) data_frame = tkinter.ttk.Frame(self.op_frame) data_frame.grid(row=3, column=0, pady=3, sticky='nsew') self.data_id_var = tk.StringVar() tkinter.ttk.Label(data_frame, text='Optical property: ').pack(side='left') cb = tkinter.ttk.Combobox(data_frame, textvariable=self.data_id_var, values=self.cell.quantities, width=10, state='readonly') cb.pack(side='left') cb.bind("<<ComboboxSelected>>", self.quantity_list_update) cb.current(0) self.op_frame.grid(row=4, column=0, pady=3, sticky='nsew') self.quantities_pane = tkinter.ttk.Frame(self.contain_frame) self.quantities_rows = {} self.quantities_pane.grid(row=5, column=0, pady=3, sticky='nsew') # -------------------------------------------- SPECIFIC PARAMS ------------------------------------------------ self.label0 = tk.Label(self.main_frame, text='Optical Indices Plot Specific Parameters', font='-weight bold') self.opp_param_frame = tkinter.ttk.LabelFrame(self.contain_frame, labelwidget=self.label0) self.opp_param_frame.grid(row=6, column=0, padx=3, pady=3, sticky='nsew') self.trace_only_var = tk.BooleanVar(value=opp.trace_only) tkinter.ttk.Checkbutton(self.opp_param_frame, text='Trace only', variable=self.trace_only_var).grid(row=0, padx=3, pady=3, sticky='nsew') self.h_shift_var = tk.DoubleVar(value=opp.h_shift) tkinter.ttk.Label(self.opp_param_frame, text='Scissor operator (horizontal shift) ').grid(row=1, column=0) # tk.Spinbox(self.opp_param_frame, textvariable=self.title_fontsize_var, width=3, from_=0, to=100).grid(row=0, column=1) tkinter.ttk.Entry(self.opp_param_frame, textvariable=self.h_shift_var, width=3).grid(row=1, column=1, sticky='we') # ---------------------------------------------- DISPLAY PARAMS ------------------------------------------------ self.display_param = tu.DisplayParametersFrame(self.contain_frame, 'Energy', 'Optical indices', self.opp) self.display_param.frame.grid(row=7, column=0, pady=3, sticky='nsew') # Color self.label2 = tk.Label(self.contain_frame, text='Colors', font='-weight bold') self.colors_pane = tkinter.ttk.LabelFrame(self.contain_frame, labelwidget=self.label2) self.color_rows = {} self.colors_pane.grid(row=8, column=0, pady=3, sticky='nsew') self.update_window() # --------------------------------------------------- BUTTONS -------------------------------------------------- buttons_frame = tkinter.ttk.Frame(self.main_frame) buttons_frame.grid() tkinter.ttk.Button(buttons_frame, text='Apply', command=lambda: self.save(False)).grid(row=0, column=0, padx=5) tkinter.ttk.Button(buttons_frame, text='OK', command=lambda: self.save(True)).grid(row=0, column=1, padx=5) tkinter.ttk.Button(buttons_frame, text='Cancel', command=self.destroy).grid(row=0, column=2, padx=5)
def __init__(self, mainwindow, cell, bpp): tk.Toplevel.__init__(self, mainwindow) self.main_frame = tkinter.ttk.Frame(self) self.main_frame.pack(expand=True, fill='both') self.mainwindow = mainwindow self.project = self.mainwindow.projects[self.mainwindow.currentprojectid] self.bpp = bpp self.cell = cell self.title(self.cell.treetitle + ' Band Plot Parameters Edition Window') # --------------------------------------------------- BPP name ------------------------------------------------- self.label0 = tk.Label(self.main_frame, text='Plot Parameters Name', pady=10) self.nameframe = tk.Frame(self.main_frame) self.nameframe.grid(row=1, column=0) namelist = [bpp.name for bpp in list(self.project.pp['bpp'].values())] self.bppname = tkinter.ttk.Combobox(self.nameframe, values=namelist, width=40) self.bppname.set(self.bpp.name) self.bppname.bind("<<ComboboxSelected>>", self.bpp_select) self.label0.grid(row=0, column=0) self.bppname.grid(row=1, column=0) tk.ttk.Button(self.nameframe, text='Save as new parameters', command=self.bpp_create).grid(row=1, column=1) # -------------------------------------------------- VARIABLES ------------------------------------------------- self.label1 = tk.Label(self.main_frame, text='Band plot parameters', font='-weight bold') self.band_frame = tkinter.ttk.LabelFrame(self.main_frame, labelwidget=self.label1) self.band_frame.grid(row=2, column=0, pady=3, sticky='nsew') self.vbm_shift_var = tk.BooleanVar(value=bpp.vbm_shift) self.highlight_vbm_cbm_var = tk.BooleanVar(value=bpp.highlight_vbm_cbm) self.hs_kpoints_var = tk.StringVar(value=','.join(bpp.hs_kpoints_names)) self.discontinuities_var = tk.BooleanVar(value=bpp.discontinuities) self.nkpts_per_seg_var = tk.IntVar(value=bpp.nkpts_per_seg) # self.disc_hshift_var = tk.DoubleVar(value=bpp.disc_hshift) self.highlight_zero_line_var = tk.BooleanVar(value=bpp.highlight_zero_line) self.nkpts_hybrid_bands_var = tk.IntVar(value=bpp.nkpts_hybrid_bands) # VBM as zero of energy tkinter.ttk.Checkbutton(self.band_frame, text='VBM as zero of energy', variable=self.vbm_shift_var, onvalue=True, offvalue=False, command=self.update_energy_range).grid(pady=3, sticky='nsew') # VBM & CBM highlight tkinter.ttk.Checkbutton(self.band_frame, text='Highlight VBM & CBM', variable=self.highlight_vbm_cbm_var, onvalue=True, offvalue=False).grid(pady=3, sticky='nsew') # Highlight zero line tkinter.ttk.Checkbutton(self.band_frame, text='Highlight zero-line', variable=self.highlight_zero_line_var, onvalue=True, offvalue=False).grid(pady=3, sticky='nsew') # High Symmetry K-points hs_kpoints_frame = tkinter.ttk.Frame(self.band_frame) hs_kpoints_frame.grid(pady=3, sticky='nsew') tkinter.ttk.Label(hs_kpoints_frame, text='High symmetry K-points (comma-separated)').pack(side='left') tkinter.ttk.Entry(hs_kpoints_frame, textvariable=self.hs_kpoints_var, width=20).pack(side='left') # Discontinuities tkinter.ttk.Checkbutton(self.band_frame, text='Discontinuities in the K-pts path', variable=self.discontinuities_var, onvalue=True, offvalue=False).grid(pady=3, sticky='nsew') nkpts_per_seg_frame = tkinter.ttk.Frame(self.band_frame) nkpts_per_seg_frame.grid(pady=3, sticky='nsew') tkinter.ttk.Label(nkpts_per_seg_frame, text='Number of K-pts per segment').pack(side='left') tkinter.ttk.Entry(nkpts_per_seg_frame, textvariable=self.nkpts_per_seg_var, width=3).pack(side='left') nkpts_hybrid_bands_frame = tkinter.ttk.Frame(self.band_frame) nkpts_hybrid_bands_frame.grid(pady=3, sticky='nsew') if self.cell.functional in ['PBE0', 'HSE', 'Hybrid']: tkinter.ttk.Label(nkpts_hybrid_bands_frame, text='Number of K-pts used for \nBand Structure Calculation (Hybrid functionals only)').pack(side='left') tkinter.ttk.Entry(nkpts_hybrid_bands_frame, textvariable=self.nkpts_hybrid_bands_var, width=3).pack(side='left') # ---------------------------------------------- DISPLAY PARAMS ------------------------------------------------ self.display_param = tu.DisplayParametersFrame(self.main_frame, 'High-symmetry K-points', 'Energy', self.bpp) self.display_param.frame.grid(row=3, column=0, pady=3, sticky='nsew') # --------------------------------------------------- BUTTONS -------------------------------------------------- buttons_frame = tkinter.ttk.Frame(self.main_frame) buttons_frame.grid(pady=3, sticky='nsew') tkinter.ttk.Button(buttons_frame, text='Apply', command=self.save).grid(row=0, column=0, padx=5) tkinter.ttk.Button(buttons_frame, text='OK', command=lambda: self.save(close=True)).grid(row=0, column=1, padx=5) tkinter.ttk.Button(buttons_frame, text='Cancel', command=self.destroy).grid(row=0, column=2, padx=5)
def __init__(self, mainwindow, cell, dpp): tk.Toplevel.__init__(self, mainwindow) self.resizable(False, False) self.maxsize(width=self.winfo_screenwidth(), height=4*self.winfo_screenheight()//5) self.minsize(height=4*self.winfo_screenheight()//5) self.cell = cell self.dpp = dpp self.mainwindow = mainwindow self.project = self.mainwindow.projects[self.mainwindow.currentprojectid] self.main_frame = tkinter.ttk.Frame(self) self.main_frame.grid(sticky='nsew') self.contain_frame = tu.ScrollableTableFrame(self.main_frame, '', []).interior cb_kwargs = {'onvalue': True, 'offvalue': False} self.title(self.cell.treetitle + ' DoS Plot Parameters Edition Window') # --------------------------------------------------- DPP name ------------------------------------------------- self.label1 = tk.Label(self.contain_frame, text='Plot Parameters Name', pady=10) self.nameframe = tk.Frame(self.contain_frame) self.nameframe.grid(row=1, column=0) namelist = [dpp.name for dpp in list(self.project.pp['dpp'].values())] self.dppname = tkinter.ttk.Combobox(self.nameframe, values=namelist, width=40) #, validate='focusout', validatecommand=self.dpp_select_create) self.dppname.set(self.dpp.name) self.dppname.bind("<<ComboboxSelected>>", self.dpp_select) self.label1.grid(row=0, column=0) self.dppname.grid(row=1, column=0) tk.ttk.Button(self.nameframe, text='Save as new parameters', command=self.dpp_create).grid(row=1, column=1) # --------------------------------------------------- DoS type ------------------------------------------------- self.spin_var = tk.BooleanVar(value=dpp.display_spin) # Frame label self.dostype_frame_label_frame = tkinter.ttk.Frame(self) tkinter.ttk.Label(self.dostype_frame_label_frame, text='DoS displayed', font='-weight bold').pack(side='left') # if self.cell.ispin == 2: # ttk.Checkbutton(self.dostype_frame_label_frame, text='Spin projection', variable=self.spin_var, **cb_kwargs).pack() # Frame self.dostype_frame = tkinter.ttk.LabelFrame(self.contain_frame, labelwidget=self.dostype_frame_label_frame) self.dostype_frame.grid(row=2, column=0, sticky='nswe', padx=5) self.dostype_frame.grid_columnconfigure(0, weight=1) # Variables self.opas_items_choice = dpp.choice_opas # Initial choice for the OPAS items choice self.opa_items_choice = dpp.choice_opa # Initial choice for the OPA items choice self.proj_colors_choice = dpp.colors_proj # Projected DoS colors choice self.tot_colors_choice = dpp.colors_tot # Total projected DoS colors choice # -------------------------------------------------- TOTAL DoS ------------------------------------------------- self.totdos_var = tk.BooleanVar(value=dpp.display_total_dos) tkinter.ttk.Checkbutton(self.dostype_frame, text='Total DoS', variable=self.totdos_var, **cb_kwargs).grid(row=2, column=0) # ------------------------------------------------ PROJECTED DoS ----------------------------------------------- self.projdos_var = tk.BooleanVar() # Labelframe and checkbutton self.projdos_cb = tkinter.ttk.Checkbutton(self, text='Projected DoS', variable=self.projdos_var, command=self.enable_proj_dos, **cb_kwargs) self.projdos_frame = tkinter.ttk.LabelFrame(self.dostype_frame, labelwidget=self.projdos_cb, labelanchor='n') self.projdos_frame.grid(row=1, column=0, sticky='nswe', padx=5) self.projdos_frame.grid_columnconfigure(0, weight=1) self.projdos_frame.grid_columnconfigure(1, weight=1) # DoS type self.dostype_var = tk.StringVar(value=dpp.dos_type) tkinter.ttk.Label(self.projdos_frame, text='DoS for each').grid(row=0, column=0, sticky='w') tkinter.ttk.Radiobutton(self.projdos_frame, text='Atomic species', variable=self.dostype_var, value='OPAS').grid(row=1, column=0) tkinter.ttk.Radiobutton(self.projdos_frame, text='Atom', variable=self.dostype_var, value='OPA').grid(row=1, column=1) # Projection choice self.totprojdos_var = tk.BooleanVar(value=dpp.tot_proj_dos) tkinter.ttk.Label(self.projdos_frame, text='Projection').grid(row=2, column=0, sticky='w') tkinter.ttk.Radiobutton(self.projdos_frame, text='Orbitals projection', variable=self.totprojdos_var, value=False).grid(row=3, column=0) tkinter.ttk.Radiobutton(self.projdos_frame, text='Total DoS', variable=self.totprojdos_var, value=True).grid(row=3, column=1) # Areas or lines self.plotareas_var = tk.BooleanVar(value=dpp.plot_areas) tkinter.ttk.Label(self.projdos_frame, text='Projected DoS style').grid(row=4, column=0, sticky='w') tkinter.ttk.Radiobutton(self.projdos_frame, text='Filled areas', variable=self.plotareas_var, value=True).grid(row=5, column=0) tkinter.ttk.Radiobutton(self.projdos_frame, text='Lines', variable=self.plotareas_var, value=False).grid(row=5, column=1) tkinter.ttk.Label(self.projdos_frame, text=' ').grid(row=6, column=0) # white space tkinter.ttk.Button(self.projdos_frame, text='Data plotted', command=self.open_atoms_choice_window).grid(row=7, column=0) tkinter.ttk.Button(self.projdos_frame, text='Colours', command=self.open_colour_choice_window).grid(row=7, column=1) if self.cell.lorbit == 11: self.projdos_var.set(dpp.display_proj_dos) else: self.projdos_var.set(False) self.projdos_cb.configure(state='disabled') tu.disable_frame(self.projdos_frame) # ------------------------------------------------ PLOT DISPLAY ------------------------------------------------ self.display_frame_label = tkinter.ttk.Label(self, text='Options on data displayed', font="-weight bold") self.display_frame = tkinter.ttk.LabelFrame(self.contain_frame, labelwidget=self.display_frame_label) self.display_frame.grid(row=3, column=0, sticky='nswe', padx=5) # Fermi level self.efdisplay_var = tk.BooleanVar(value=dpp.display_Fermi_level) tkinter.ttk.Checkbutton(self.display_frame, text='Fermi level', variable=self.efdisplay_var, **cb_kwargs).grid(row=0, column=0, sticky='w') # Band extrema self.bedisplay_var = tk.BooleanVar(value=dpp.display_BM_levels) tkinter.ttk.Checkbutton(self.display_frame, text='Band extrema levels', variable=self.bedisplay_var, **cb_kwargs).grid(row=1, column=1, sticky='w') self.fermishift_var = tk.BooleanVar(value=dpp.fermi_shift) tkinter.ttk.Checkbutton(self.display_frame, text='Fermi level as zero of energy', variable=self.fermishift_var, command=self.update_energy_range, **cb_kwargs).grid(row=0, column=1, sticky='w') self.normalize_var = tk.BooleanVar(value=dpp.normalize) tkinter.ttk.Checkbutton(self.display_frame, text='Normalize plots', variable=self.normalize_var, command=self.update_normalize, **cb_kwargs).grid(row=1, column=0, sticky='w') self.display_spin_var = tk.BooleanVar(value=dpp.display_spin) tkinter.ttk.Checkbutton(self.display_frame, text='Display spin projections', variable=self.display_spin_var, **cb_kwargs).grid(row=2, column=0, sticky='w') self.smooth_var = tk.BooleanVar(value=dpp.smooth) tkinter.ttk.Checkbutton(self.display_frame, text='Smooth DoS', variable=self.smooth_var, **cb_kwargs).grid(row=3, column=0, sticky='w') self.n_smooth_var = tk.IntVar(value=dpp.n_smooth) group_frame = tkinter.ttk.Frame(self.display_frame) tkinter.ttk.Label(group_frame, text='Moving average order').grid(row=0, column=0, sticky='nsew') tk.Spinbox(group_frame, textvariable=self.n_smooth_var, width=3, from_=2, to=dpp.nedos/2).grid(row=0, column=1, sticky='nsew') group_frame.grid(row=3, column=1, sticky='w') # ---------------------------------------------- DISPLAY PARAMS ------------------------------------------------ self.display_param = tu.DisplayParametersFrame(self.contain_frame, 'E', 'DoS', self.dpp) self.display_param.frame.grid(row=4, column=0, pady=3, sticky='nsew') # --------------------------------------------------- BUTTONS -------------------------------------------------- buttons_frame = tkinter.ttk.Frame(self.main_frame) buttons_frame.grid(row=1, column=0, pady=3, sticky='nsew') tkinter.ttk.Button(buttons_frame, text='Apply', command=self.save).grid(row=0, column=0, padx=5) tkinter.ttk.Button(buttons_frame, text='OK', command=lambda: self.save(close=True)).grid(row=0, column=1, padx=5) tkinter.ttk.Button(buttons_frame, text='Cancel', command=self.destroy).grid(row=0, column=2, padx=5)
def __init__(self, mainwindow, material_study): tk.Toplevel.__init__(self, mainwindow) self.mainwindow = mainwindow self.material_study = material_study self.eftpp = material_study.eftpp self.main_frame = ttk.Frame(self) self.main_frame.grid(sticky='nsew') self.main_frame.grid_columnconfigure(0, weight=1) self.title(material_study.treetitle + ' Fermi Level Variations Plot Parameters Window') # --------------------------------------------- EFFECTIVE MASSE -------------------------------------------------- label0 = tk.Label(self.main_frame, text='Charge Carriers Effective Masses', font='-weight bold') masses_frame = ttk.LabelFrame(self.main_frame, labelwidget=label0) masses_frame.grid(sticky='nsew') self.m_e_entry = tu.QuantityEntry(masses_frame, 'Electrons effective mass', self.eftpp.m_e, ' me', width=5) self.m_e_entry.pack(padx=5, pady=5) self.m_h_entry = tu.QuantityEntry(masses_frame, 'Holes effective mass', self.eftpp.m_h, ' me', width=5) self.m_h_entry.pack(padx=5, pady=5) # --------------------------------------------- TEMPERATURES -------------------------------------------------- label1 = tk.Label(self.main_frame, text='Temperatures', font='-weight bold') temperature_frame = ttk.LabelFrame(self.main_frame, labelwidget=label1) temperature_frame.grid() tk.Label(temperature_frame, text='Growth Temperature (fixed) ').grid(row=0, column=0) self.cte_temp = tu.QuantityEntry(temperature_frame, '', self.eftpp.temperature, 'K', width=7) self.cte_temp.grid(row=0, column=1) self.temp_range = tu.RangeFrame(temperature_frame, self.eftpp.xmin, self.eftpp.xmax, 'Ambiant Temperature', 'K', step=self.eftpp.dt, width=7) self.temp_range.grid(row=1, column=0, columnspan=2, pady=5, padx=5) # Display parameters # ---------------------------------------------- DISPLAY PARAMS ------------------------------------------------ self.display_param = tu.DisplayParametersFrame( self.main_frame, 'Ambiant Temperature', 'Charge Carriers Concentrations', self.eftpp) self.display_param.frame.grid(row=2, column=0, pady=3, sticky='nsew') # --------------------------------------------------- BUTTONS -------------------------------------------------- buttons_frame = ttk.Frame(self.main_frame) buttons_frame.grid(row=5, column=0, pady=3, sticky='nsew') ttk.Button(buttons_frame, text='Apply', command=self.save).grid(row=0, column=0, padx=5) ttk.Button(buttons_frame, text='OK', command=lambda: self.save(close=True)).grid(row=0, column=1, padx=5) ttk.Button(buttons_frame, text='Cancel', command=self.destroy).grid(row=0, column=2, padx=5)
def __init__(self, mainwindow, material_study): tk.Toplevel.__init__(self, mainwindow) self.mainwindow = mainwindow self.material_study = material_study self.cpp = material_study.cpp self.main_frame = ttk.Frame(self) self.main_frame.grid(sticky='nsew') self.main_frame.grid_columnconfigure(0, weight=1) self.title(material_study.treetitle + ' Defect Concentrations Plot Parameters Window') # --------------------------------------------- EFFECTIVE MASSE -------------------------------------------------- label0 = tk.Label(self.main_frame, text='Charge Carriers Effective Masses', font='-weight bold') masses_frame = ttk.LabelFrame(self.main_frame, labelwidget=label0) masses_frame.grid(sticky='nsew') self.m_e_entry = tu.QuantityEntry(masses_frame, 'Electrons effective mass', self.cpp.m_e, ' me', width=5) self.m_e_entry.pack(padx=5, pady=5) self.m_h_entry = tu.QuantityEntry(masses_frame, 'Holes effective mass', self.cpp.m_h, ' me', width=5) self.m_h_entry.pack(padx=5, pady=5) # --------------------------------------------- TEMPERATURES -------------------------------------------------- label1 = tk.Label(self.main_frame, text='Temperatures', font='-weight bold') temperature_frame = ttk.LabelFrame(self.main_frame, labelwidget=label1) temperature_frame.grid() tk.Label(temperature_frame, text='Ambiant Temperature (fixed) ').grid(row=0, column=0) self.cte_temp = tu.QuantityEntry(temperature_frame, '', self.cpp.temperature, 'K', width=7) self.cte_temp.grid(row=0, column=1) self.temp_range = tu.RangeFrame(temperature_frame, self.cpp.xmin, self.cpp.xmax, 'Growth Temperature', 'K', step=self.cpp.dt, width=7) self.temp_range.grid(row=1, column=0, columnspan=2, pady=5, padx=5) # --------------------------------------------- SPECIFIC OPTIONS -------------------------------------------------- self.charge_carriers_var = tk.BooleanVar( value=self.cpp.charge_carriers) self.fill_type_var = tk.IntVar(value=self.cpp.fill_type) label11 = tk.Label(self.main_frame, text='Specific options', font='-weight bold') options_frame = ttk.LabelFrame(self.main_frame, labelwidget=label11) options_frame.grid(sticky='nsew') # Display charge carriers ttk.Checkbutton( options_frame, text='Display charge carriers concentrations ', variable=self.charge_carriers_var, command=self.set_display_charge_carriers).pack(side='left') # Fill conductivity type ttk.Checkbutton(options_frame, text='Fill conductivity type ', variable=self.fill_type_var, command=self.set_fill_type).pack(side='left') # ---------------------------------------------- DISPLAY PARAMS ------------------------------------------------ self.display_param = tu.DisplayParametersFrame( self.main_frame, 'Growth Temperature', 'Defect Concentrations', self.cpp) self.display_param.frame.grid(row=3, column=0, pady=3, sticky='nsew') # ---------------------------------------------- COLORS ------------------------------------------------ self.label2 = tk.Label(self.main_frame, text='Colors', font='-weight bold') self.colors_pane = ttk.LabelFrame(self.main_frame, labelwidget=self.label2) self.colors = {} self.labels = {} self.index = 0 def title(key): if key in ['n (electrons)', 'n (holes)', 'n type', 'p type']: return key else: return self.material_study.defect_studies[key].treetitle sort_list = [[key, title(key)] for key in self.cpp.colors.keys()] sort_list.sort(key=lambda x: x[1]) for key, treetitle in sort_list: if key in self.cpp.data_id or (key in ['n type', 'p type'] and self.cpp.fill_type): self.colors[key] = tk.Button( self.colors_pane, text='\t\t', bg=self.cpp.colors[key], command=lambda port=key: self.set_color(port)) self.colors[key].grid(row=self.index, column=0, sticky='w') self.labels[key] = tk.Label(self.colors_pane, text=treetitle) self.labels[key].grid(row=self.index, column=1, sticky='w') self.index += 1 self.colors_pane.grid(row=4, column=0, pady=3, sticky='nsew') # --------------------------------------------------- BUTTONS -------------------------------------------------- buttons_frame = ttk.Frame(self.main_frame) buttons_frame.grid(row=5, column=0, pady=3, sticky='nsew') ttk.Button(buttons_frame, text='Apply', command=self.save).grid(row=0, column=0, padx=5) ttk.Button(buttons_frame, text='OK', command=lambda: self.save(close=True)).grid(row=0, column=1, padx=5) ttk.Button(buttons_frame, text='Cancel', command=self.destroy).grid(row=0, column=2, padx=5)
def __init__(self, mainwindow, defect_study): tk.Toplevel.__init__(self, mainwindow) self.resizable(False, False) self.mainwindow = mainwindow self.project = self.mainwindow.projects[ self.mainwindow.currentprojectid] self.fpp = defect_study.fpp self.main_frame = ttk.Frame(self) self.main_frame.pack(expand=True, fill='both') self.main_frame.grid_columnconfigure(0, weight=1) self.title(defect_study.treetitle + ' Formation Energy Plot Parameters Edition Window') # ---------------------------------------------- FPP PARAMS ------------------------------------------------ self.label0 = tk.Label( self.main_frame, text='Formation Energy Plot Specific Parameters', font='-weight bold') self.fpp_param_frame = ttk.LabelFrame(self.main_frame, labelwidget=self.label0) self.fpp_param_frame.grid(sticky='nsew') self.display_transition_levels_var = tk.BooleanVar( value=self.fpp.display_transition_levels) ttk.Checkbutton(self.fpp_param_frame, text='Display Transition Levels', variable=self.display_transition_levels_var, onvalue=True, offvalue=False).grid(row=0, column=1, sticky=W) self.display_charges_var = tk.BooleanVar( value=self.fpp.display_charges) ttk.Checkbutton(self.fpp_param_frame, text='Display Charges', variable=self.display_charges_var, onvalue=True, offvalue=False).grid(row=1, column=1, sticky=W) # ---------------------------------------------- DISPLAY PARAMS ------------------------------------------------ self.display_param = tu.DisplayParametersFrame(self.main_frame, 'Position in the gap', 'Formation energy', self.fpp) self.display_param.frame.grid(row=2, column=0, pady=3, sticky='nsew') # --------------------------------------------------- BUTTONS -------------------------------------------------- buttons_frame = ttk.Frame(self.main_frame) buttons_frame.grid(row=3, column=0, pady=3, sticky='nsew') ttk.Button(buttons_frame, text='Apply', command=self.save).grid(row=0, column=0, padx=5) ttk.Button(buttons_frame, text='OK', command=lambda: self.save(close=True)).grid(row=0, column=1, padx=5) ttk.Button(buttons_frame, text='Cancel', command=self.destroy).grid(row=0, column=2, padx=5)
def __init__(self, mainwindow, material_study): tk.Toplevel.__init__(self, mainwindow) self.resizable(False, False) self.mainwindow = mainwindow self.project = self.mainwindow.projects[ self.mainwindow.currentprojectid] self.fpp = material_study.lastfpp self.main_frame = ttk.Frame(self) self.main_frame.pack(expand=True, fill='both') self.main_frame.grid_columnconfigure(0, weight=1) self.title(material_study.treetitle + ' Defect Formation Energies Plot Parameters Edition Window') # --------------------------------------------------- FPP name ------------------------------------------------- self.label0 = tk.Label(self.main_frame, text='Plot Parameters Name', pady=10) self.nameframe = tk.Frame(self.main_frame) self.nameframe.grid(row=1, column=0) namelist = [fpp.name for fpp in self.project.pp['fpp'].values()] self.fppname = ttk.Combobox(self.nameframe, values=namelist, width=40) self.fppname.set(self.fpp.name) self.fppname.bind("<<ComboboxSelected>>", self.fpp_select) self.label0.grid(row=0, column=0) self.fppname.grid(row=1, column=0) tk.Button(self.nameframe, text='Save as new parameters', command=self.fpp_create).grid(row=1, column=1) # ---------------------------------------------- FPP PARAMS ------------------------------------------------ self.label0 = tk.Label( self.main_frame, text='Formation Energy Plot Specific Parameters', font='-weight bold') self.fpp_param_frame = ttk.LabelFrame(self.main_frame, labelwidget=self.label0) self.fpp_param_frame.grid(sticky='nsew') self.display_charges_var = tk.BooleanVar( value=self.fpp.display_charges) ttk.Checkbutton(self.fpp_param_frame, text='Display Charges', variable=self.display_charges_var, onvalue=True, offvalue=False).grid(row=0, column=1, sticky=W) self.highlight_charge_change_var = tk.BooleanVar( value=self.fpp.highlight_charge_change) ttk.Checkbutton(self.fpp_param_frame, text='Highlight Charge Transition Levels', variable=self.highlight_charge_change_var, onvalue=True, offvalue=False).grid(row=1, column=1, sticky=W) self.display_gaps_legend_var = tk.BooleanVar( value=self.fpp.display_gaps_legend) ttk.Checkbutton(self.fpp_param_frame, text='Display Gap Legend', variable=self.display_gaps_legend_var, onvalue=True, offvalue=False).grid(row=2, column=1, sticky=W) # ---------------------------------------------- DISPLAY PARAMS ------------------------------------------------ self.display_param = tu.DisplayParametersFrame(self.main_frame, 'Position in the gap', 'Formation energy', self.fpp) self.display_param.frame.grid(row=3, column=0, pady=3, sticky='nsew') # ---------------------------------------------- COLORS ------------------------------------------------ self.label2 = tk.Label(self.main_frame, text='Colors', font='-weight bold') self.colors_pane = ttk.LabelFrame(self.main_frame, labelwidget=self.label2) self.colors = {} index = 0 for def_stud in material_study.ds_list: self.colors[def_stud.ID] = tk.Button( self.colors_pane, text='\t\t', bg=self.fpp.colors[def_stud.ID], command=lambda port=def_stud.ID: self.set_color(port)) self.colors[def_stud.ID].grid(row=index, column=0, sticky='w') tk.Label(self.colors_pane, text=def_stud.treetitle).grid(row=index, column=1, sticky='w') index += 1 self.colors_pane.grid(row=4, column=0, pady=3, sticky='nsew') # --------------------------------------------------- BUTTONS -------------------------------------------------- buttons_frame = ttk.Frame(self.main_frame) buttons_frame.grid(row=5, column=0, pady=3, sticky='nsew') ttk.Button(buttons_frame, text='Apply', command=self.save).grid(row=0, column=0, padx=5) ttk.Button(buttons_frame, text='OK', command=lambda: self.save(close=True)).grid(row=0, column=1, padx=5) ttk.Button(buttons_frame, text='Cancel', command=self.destroy).grid(row=0, column=2, padx=5)