def test_get_from_int(self): v = DoubleVar(self.root, 1.23, 'name') self.assertAlmostEqual(1.23, v.get()) self.root.globalsetvar('name', '3.45') self.assertAlmostEqual(3.45, v.get()) self.root.globalsetvar('name', '456') self.assertAlmostEqual(456, v.get())
def __init__(self, master, version, fonttype, timeunit, lengthunit, chemicals, taucoefs, BCs): """Constructor method.""" self.master = master self.version = version self.fonttype = fonttype self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.superfont = get_superfont(self.fonttype) self.Decays = ['None', 'First order'] self.Evaps = ['None', 'First order'] self.top = None self.cancelflag = 0 self.timeunit = timeunit self.lengthunit = lengthunit self.Q = DoubleVar(value=taucoefs['Q']) self.V = DoubleVar(value=taucoefs['V']) self.h = DoubleVar(value=taucoefs['h']) self.Qevap = DoubleVar(value=taucoefs['Qevap']) self.doc = DoubleVar(value=taucoefs['DOC']) self.Decay = StringVar(value=taucoefs['Decay']) self.Evap = StringVar(value=taucoefs['Evap']) self.chemicals = chemicals self.kdecays = [] self.kevaps = [] for chemical in self.chemicals: self.kdecays.append(BCs[chemical.name].kdecay) self.kevaps.append(BCs[chemical.name].kevap)
def __init__(self, master, system, reaction, editflag): """Constructor method. Makes the GUI using the list of "Layer" objects "layers." """ # Read the Tkinter information self.master = master self.fonttype = system.fonttype self.formulatype = system.formulatype self.version = system.version self.superfont = get_superfont(self.fonttype) self.subfont = get_superfont(self.formulatype) self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.bgcolor = self.frame.cget('bg') self.top = None self.system = system # Read the system information self.chemicals = system.chemicals self.reaction = reaction self.editflag = editflag # Define the reaction chemical information self.chemical_list = [chemical.name for chemical in self.chemicals] self.formula_list = [chemical.formula for chemical in self.chemicals] self.MW_list = [chemical.MW for chemical in self.chemicals] self.models = ['Fundamental', 'User-defined'] self.name = StringVar(value='Reaction ' + str(reaction.number)) self.model = StringVar(value=self.models[0]) self.reactants = [] self.products = [] #self.stoichcoef = reaction.stoichcoef if editflag == 1: self.name = StringVar(value=reaction.name) self.model = StringVar(value=reaction.model) self.reactants = [ reactant.copy() for reactant in reaction.reactants ] self.products = [product.copy() for product in reaction.products] for reactant in self.reactants: reactant.coef = DoubleVar(value=reactant.coef) reactant.index = DoubleVar(value=reactant.index) reactant.name = StringVar(value=reactant.name) reactant.formula = StringVar(value=reactant.formula) reactant.MW = DoubleVar(value=reactant.MW) for product in self.products: product.coef = DoubleVar(value=product.coef) product.name = StringVar(value=product.name) product.formula = StringVar(value=product.formula) product.MW = DoubleVar(value=product.MW) self.cancelflag = 0
def __init__(self, master, version, fonttype, bltype, blcoefs): """Constructor method.""" self.version = version self.fonttype = fonttype self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.superfont = get_superfont(self.fonttype) self.bltypes = ['River', 'Lake'] self.bltype = StringVar(value=bltype) self.top = None self.cancelflag = 0 #Parameters for Mass transfer coefficient in river self.vx = DoubleVar(value=blcoefs['vx']) self.n = DoubleVar(value=blcoefs['n']) self.hriver = DoubleVar(value=blcoefs['hriver']) self.rh = DoubleVar(value=blcoefs['rh']) self.nu = DoubleVar(value=blcoefs['nu']) #Parameters for Mass transfer coefficient in lake self.rhoair = DoubleVar(value=blcoefs['rhoair']) self.rhowater = DoubleVar(value=blcoefs['rhowater']) self.vwind = DoubleVar(value=blcoefs['vwind']) self.hlake = DoubleVar(value=blcoefs['hlake']) self.llake = DoubleVar(value=blcoefs['llake'])
def test_get_from_int(self): v = DoubleVar(self.root, 1.23, "name") self.assertAlmostEqual(1.23, v.get()) self.root.globalsetvar("name", "3.45") self.assertAlmostEqual(3.45, v.get()) self.root.globalsetvar("name", "456") self.assertAlmostEqual(456, v.get())
def __init__(self, interface, toplevel=False, start_t=False, stop_t=False): ''' ''' self.abort = False if not start_t: start_t = datetime.utcnow() - timedelta(hours=2) if not stop_t: stop_t = datetime.utcnow() self.update_pending = False self.pype = interface self.plot_dicts = {} if isinstance(start_t, datetime): self.start_t = StringVar(value=start_t.strftime(time_format)) elif isinstance(start_t, str): self.start_t = StringVar(value=start_t) else: raise TypeError('start_t must be string or datetime') if isinstance(stop_t, datetime): self.stop_t = StringVar(value=stop_t.strftime(time_format)) elif isinstance(stop_t, str): self.stop_t = StringVar(value=stop_t) else: raise TypeError('stop_t must be string or datetime') self.time_interval = [self.start_t.get(), self.stop_t.get()] self.ymin = DoubleVar() self.ymax = DoubleVar() if toplevel: self.toplevel = toplevel else: self.toplevel = Tk.Tk() self.status_var = StringVar(value='initializing') self._SetupCanvas() self._BuildGui() if not toplevel: Tk.mainloop()
class RotatePanel(CtxSubPanel): name = 'RotatePanel' def __init__(self, parent): CtxSubPanel.__init__(self, parent) self.angle = DoubleVar(self.mw.root) self.angle.set(0) label = TLabel(self.panel, image='context_R') label.pack(side=LEFT) self.entry_width = TSpinbox(self.panel, var=0, vartype=1, textvariable=self.angle, min=-360, max=360, step=1, width=6, command=self.applyRotate) tooltips.AddDescription(self.entry_width, _('Rotation angle')) self.entry_width.pack(side=LEFT, padx=5) b = TButton(self.panel, command=self.rotLeft, style='Toolbutton', image='context_rotate_ccw') tooltips.AddDescription(b, _(u'Rotate -90°')) b.pack(side=LEFT) b = TButton(self.panel, command=self.rot180, style='Toolbutton', image='context_rotate') tooltips.AddDescription(b, _(u'Rotate 180°')) b.pack(side=LEFT) b = TButton(self.panel, command=self.rotRight, style='Toolbutton', image='context_rotate_cw') tooltips.AddDescription(b, _(u'Rotate 90°')) b.pack(side=LEFT) def rot180(self): self.rotation(180) def rotLeft(self): self.rotation(90) def rotRight(self): self.rotation(-90) def applyRotate(self, *arg): self.rotation(self.angle.get()) def rotation(self, angle): if angle < 0: if angle < -360: angle += int(angle / 360) * 360 angle += 360 self.doc.RotateSelected(angle)
def addreactant(self): self.reactants.append(Reactant(len(self.reactants) + 1)) self.reactants[-1].coef = DoubleVar(value=1) self.reactants[-1].name = StringVar(value=self.chemical_list[0]) self.reactants[-1].formula = StringVar(value=self.formula_list[0]) self.reactants[-1].index = DoubleVar(value=1) self.reactants[-1].MW = DoubleVar(value=self.MW_list[0]) self.updatereaction()
def __init__(self, parent): CtxSubPanel.__init__(self, parent) self.my_changes = 0 self.var_width_number = DoubleVar(self.mw.root) self.var_height_number = DoubleVar(self.mw.root) var_width_unit = StringVar(self.mw.root) var_height_unit = StringVar(self.mw.root) unit = config.preferences.default_unit self.var_width = LengthVar(10, unit, self.var_width_number, var_width_unit) self.var_height = LengthVar(10, unit, self.var_height_number, var_height_unit) jump = config.preferences.default_unit_jump self.var_width.set(0) self.var_height.set(0) label = TLabel(self.panel, image='size_h') label.pack(side=LEFT) self.entry_width = TSpinbox(self.panel, var=0, vartype=1, textvariable=self.var_width_number, min=0, max=50000, step=jump, width=6, command=self.applyResize) tooltips.AddDescription(self.entry_width, _("Width of selection")) self.entry_width.pack(side=LEFT, padx=5) label = TLabel(self.panel, image='size_v') label.pack(side=LEFT) self.entry_height = TSpinbox(self.panel, var=0, vartype=1, textvariable=self.var_height_number, min=0, max=50000, step=jump, width=6, command=self.applyResize) tooltips.AddDescription(self.entry_height, _("Height of selection")) self.entry_height.pack(side=LEFT, padx=5) self.ReSubscribe() config.preferences.Subscribe(CHANGED, self.update_pref)
def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent training_error_laber = Label(self, text='Training Error: ') training_error_laber.pack(side='left') error_options = [round(0.1 + i * 0.1, 2) for i in range(25)] self.selected_error = DoubleVar(self, value=DEFAULT_TRAINING_ERROR) option_menu = OptionMenu(self, self.selected_error, *error_options, command=self._on_error_selection) option_menu.pack(side='right')
def __init__(self,parent,view,lissajou,subjectSig,subjects): self.cursorFrame = Frame(parent) self.selectionFrame = Frame(self.cursorFrame) self.view = view self.lissajou = lissajou self.subjects = subjects self.subjectSig=subjectSig self.amp=IntVar() self.scale_amp=Scale(self.cursorFrame,variable=self.amp, label="Amplitude", orient="horizontal",length=250,from_=0,to=10, sliderlength=50,tickinterval=1,showvalue=0, command=self.update) self.freq=IntVar() self.scale_freq=Scale(self.cursorFrame,variable=self.freq, label="Frequence", orient="horizontal",length=250,from_=0,to=10, sliderlength=50,tickinterval=0,showvalue=0, command=self.update) self.offset=DoubleVar() self.scale_offset=Scale(self.cursorFrame,variable=self.offset, label="Offset", orient="horizontal",length=250,from_=-10.0,to=10.0, sliderlength=50,tickinterval=5,showvalue=0, command=self.update) self.phase=IntVar() self.scale_phase=Scale(self.cursorFrame,variable=self.phase, label="Phase", orient="horizontal",length=250,from_=-90,to=90, sliderlength=10,tickinterval=45,showvalue=0, command=self.update) self.voltVar = DoubleVar() self.voltVar.set(1) self.button1 = Radiobutton(self.selectionFrame, text="1V", variable=self.voltVar, value=1.0*5.0,command =lambda:self.update(None)) self.button1.select() self.button2 = Radiobutton(self.selectionFrame, text="2V", variable=self.voltVar, value=2.0*5.0, command =lambda:self.update(None)) self.button5 = Radiobutton(self.selectionFrame, text="5V", variable=self.voltVar, value=5.0*5.0, command =lambda:self.update(None)) self.isOffsetVar= IntVar() self.isOffset = Checkbutton(self.selectionFrame,text = "Offset",variable = self.isOffsetVar, command =lambda:self.update(None))
def init_ui(self): self.parent.title('Fake Device') self.style = Style() self.style.theme_use('default') self.pack(fill=BOTH, expand=1) x_scale = Scale(self, from_=self.MIN_X, to=self.MAX_X, command=self.on_scale_x) x_scale.place(x=0, y=0) y_scale = Scale(self, from_=self.MIN_Y, to=self.MAX_Y, command=self.on_scale_y) y_scale.place(x=0, y=20) z_scale = Scale(self, from_=self.MIN_Z, to=self.MAX_Z, command=self.on_scale_z) z_scale.place(x=0, y=40) angle_scale = Scale(self, from_=0, to=math.pi / 2, command=self.on_scale_angle) angle_scale.place(x=0, y=80) self.x_var = IntVar() self.x_label = Label(self, text=0, textvariable=self.x_var) self.x_label.place(x=100, y=0) self.y_var = IntVar() self.y_label = Label(self, text=0, textvariable=self.y_var) self.y_label.place(x=100, y=20) self.z_var = IntVar() self.z_label = Label(self, text=0, textvariable=self.z_var) self.z_label.place(x=100, y=40) self.angle_var = DoubleVar() self.angle_label = Label(self, text=0, textvariable=self.angle_var) self.angle_label.place(x=100, y=80) self.button = Button(self, text='test', command=self.on_button) self.button.place(x=0, y=100)
def __init__(self, parent): self.my_changes = 0 CtxSubPanel.__init__(self, parent) self.var_jump_number = DoubleVar(self.mw.root) unit = config.preferences.default_unit var_jump_unit = StringVar(self.mw.root) self.var_jump = LengthVar(10, unit, self.var_jump_number, var_jump_unit) label = TLabel(self.panel, text=_("Jump:")) label.pack(side=LEFT, padx=2) self.entry_jump = TSpinbox(self.panel, var=0, vartype=1, textvariable=self.var_jump_number, min=0, max=1000, step=.1, width=6, command=self.applyJump) self.entry_jump.pack(side=LEFT, padx=2) config.preferences.Subscribe(CHANGED, self.update) self.var_jump.set(config.preferences.handle_jump) self.update(0, 0)
def __init__(self, master=None, **kw): apply(PatternFrame.__init__, (self, master), kw) gradient = CreateSimpleGradient(StandardColors.white, StandardColors.black) frame = Frame(self) frame.pack(side = TOP, fill = X) self.var_gradient_type = IntVar(self) for value, bitmap in [(0, 'linear'), (1, 'conical'), (2, 'radial')]: bitmap = getattr(pixmaps, 'gradient_' + bitmap) button = make_button(frame, bitmap = bitmap, value = value, variable = self.var_gradient_type, command = self.choose_type) button.pack(side = LEFT, fill = X, expand = 1) frame = Frame(self) frame.pack(side = TOP, expand = 1, fill = X) self.colors = [None, None] self.colors[0] = ColorButton(frame, height = 1, color = gradient.StartColor(), command = self.set_color, args = 0) self.colors[0].pack(side = LEFT, fill = X, expand = 1) self.colors[1] = ColorButton(frame, height = 1, color = gradient.EndColor(), command = self.set_color, args = 1) self.colors[1].pack(side = LEFT, fill = X, expand = 1) self.var_border = DoubleVar(self) self.var_border.set(0.0) frame = Frame(self) frame.pack(side = TOP, fill = X, expand = 1) label = Label(frame, text = _("Border")) label.pack(side = LEFT, expand = 1, anchor = E) entry = MyEntry(frame, textvariable = self.var_border, width = 4, justify = RIGHT, command = self.set_border) entry.pack(side = LEFT, expand = 1, fill = X) scroll = MiniScroller(frame, variable = self.var_border, min = 0.0, max = 100.0, step = 1.0, command = self.set_border) scroll.pack(side = LEFT, fill = Y) button = UpdatedButton(self, text = _("Edit Gradient"), command = self.edit_gradient) button.pack(side = TOP, fill = X) pattern = LinearGradient(gradient) self.SetPattern(pattern)
def __init__(self, parent, def_dict=None, tracker_path=None, to_game_callback=None, **kw): BaseWiget.__init__(self,parent, def_dict=def_dict, tracker_path=tracker_path, to_game_callback=to_game_callback, **kw) self.old_value = 0 outType = def_dict.get("outType", float) if outType == int: integer = True elif outType == float: integer = False else: raise TypeError("outType = %s"%repr(outType)) minVal = def_dict.get("minVal", 0) maxVal = def_dict.get("maxVal", 100) step = 1 if integer: self.var = IntVar() else: self.var = DoubleVar() step = 1.0 if (maxVal-minVal) < 5: step = 0.01 if "step" in def_dict: step = def_dict["step"] self.entry = Control(self, label=self.caption, integer=integer, variable=self.var, min=minVal, max=maxVal, step = step, options='entry.width 20 label.width 1 label.anchor w entry.anchor w') if not integer: number_zero = len(str(step).split(".")[1]) foramter = "%.{0}f".format(number_zero) def foo(num): num = float(num) if num>maxVal:num = maxVal if num<minVal:num = minVal return foramter%num self.entry['validatecmd'] = foo self.entry.grid(row=1, column=1) self.var.trace("w", self._onChangeVariable) self.old_value = self.getValue() self.onEndSetupContent()
def __init__(self, parent): CtxSubPanel.__init__(self, parent) b = TButton(self.panel, command=self.makePageFrame, style='Toolbutton', image='context_add_page_frame') tooltips.AddDescription(b, _('Add page frame')) b.pack(side=LEFT) b = TButton(self.panel, command=self.addCenteredGuides, style='Toolbutton', image='context_add_centered_guides') tooltips.AddDescription(b, _('Add guides for page center')) b.pack(side=LEFT) ############# b = TLabel(self.panel, image="toolbar_sep") b.pack(side=LEFT) b = TButton(self.panel, command=self.addGuidesFrame, style='Toolbutton', image='context_add_guides_frame') tooltips.AddDescription(b, _('Add guides across page border')) b.pack(side=LEFT) self.var_jump_number = DoubleVar(self.mw.root) unit = config.preferences.default_unit var_jump_unit = StringVar(self.mw.root) self.var_jump = LengthVar(10, unit, self.var_jump_number, var_jump_unit) self.entry_jump = TSpinbox(self.panel, var=0, vartype=1, textvariable=self.var_jump_number, min=-1000, max=1000, step=5, width=6, command=self.addGuidesFrame) self.entry_jump.pack(side=LEFT, padx=2) config.preferences.Subscribe(CHANGED, self.update) self.var_jump.set(0) self.update(0, 0) b = TLabel(self.panel, image="toolbar_sep") b.pack(side=LEFT) ############## b = TButton(self.panel, command=self.removeAllGuides, style='Toolbutton', image='context_remove_all_guides') tooltips.AddDescription(b, _('Remove all guides')) b.pack(side=LEFT)
class RotatePanel(CtxSubPanel): name='RotatePanel' def __init__(self, parent): CtxSubPanel.__init__(self, parent) self.angle=DoubleVar(self.mw.root) self.angle.set(0) label = TLabel(self.panel, image='context_R') label.pack(side = LEFT) self.entry_width = TSpinbox(self.panel, var=0, vartype=1, textvariable = self.angle, min = -360, max = 360, step = 1, width = 6, command = self.applyRotate) tooltips.AddDescription(self.entry_width, _('Rotation angle')) self.entry_width.pack(side = LEFT, padx=5) b = TButton(self.panel, command=self.rotLeft, style='Toolbutton', image='context_rotate_ccw') tooltips.AddDescription(b, _(u'Rotate -90°')) b.pack(side = LEFT) b = TButton(self.panel, command=self.rot180, style='Toolbutton', image='context_rotate') tooltips.AddDescription(b, _(u'Rotate 180°')) b.pack(side = LEFT) b = TButton(self.panel, command=self.rotRight, style='Toolbutton', image='context_rotate_cw') tooltips.AddDescription(b, _(u'Rotate 90°')) b.pack(side = LEFT) def rot180(self): self.rotation(180) def rotLeft(self): self.rotation(90) def rotRight(self): self.rotation(-90) def applyRotate(self, *arg): self.rotation(self.angle.get()) def rotation(self, angle): if angle<0: if angle<-360: angle+=int(angle/360)*360 angle+=360 self.doc.RotateSelected(angle)
def addproduct(self): self.products.append(Product(len(self.products) + 1)) self.products[-1].coef = DoubleVar(value=1) self.products[-1].name = StringVar(value=self.chemical_list[0]) self.products[-1].formula = StringVar(value=self.formula_list[0]) self.products[-1].MW = StringVar(value=self.MW_list[0]) self.updatereaction()
def init_widgets(self): self.content_wrapper = Frame(self) self.content_wrapper.configure(bg="white") self.screen_title = Header1Label(self.content_wrapper) self.empty_space_1 = PLabel(self.content_wrapper) self.progress_bar_control_var = DoubleVar() self.progress_bar = Progressbar(self.content_wrapper, orient=HORIZONTAL, mode="determinate", length=WINDOW_WIDTH / 2, variable=self.progress_bar_control_var) self.wait_text = PLabel(self.content_wrapper) self.information_display = PLabel(self.content_wrapper) self.empty_space_2 = PLabel(self.content_wrapper) self.next_button = Button(self.content_wrapper, text="Next", state=DISABLED, command=lambda: self.on_next_button())
def build_dlg(self): # The SKModal constructor automatically calls this method to # create the widgets in the dialog. # # self.top is the top-level window of the dialog. All widgets of # the dialog must contained in it. top = self.top # The rest is normal Tkinter code. self.var_corners = IntVar(top) self.var_corners.set(5) label = Label(top, text = _("Corners"), anchor = 'e') label.grid(column = 0, row = 0, sticky = 'ew') entry = Entry(top, textvariable = self.var_corners, width = 15) entry.grid(column = 1, row = 0, sticky = 'ew') self.var_steps = IntVar(top) self.var_steps.set(2) label = Label(top, text = _("Steps"), anchor = 'e') label.grid(column = 0, row = 1, sticky = 'ew') entry = Entry(top, textvariable = self.var_steps, width = 15) entry.grid(column = 1, row = 1, sticky = 'ew') self.var_radius = DoubleVar(top) self.var_radius.set(100) label = Label(top, text = _("Radius"), anchor = 'e') label.grid(column = 0, row = 2, sticky = 'ew') entry = Entry(top, textvariable = self.var_radius, width = 15) entry.grid(column = 1, row = 2, sticky = 'ew') but_frame = Frame(top) but_frame.grid(column = 0, row = 3, columnspan = 2) button = Button(but_frame, text = _("OK"), command = self.ok) button.pack(side = 'left', expand = 1) # The self.cancel method is provided by the base class and # cancels the dialog. button = Button(but_frame, text = _("Cancel"), command = self.cancel) button.pack(side = 'right', expand = 1)
def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent training_error_laber = Label(self, text = 'Training Error: ') training_error_laber.pack(side = 'left') error_options = [round(0.1 + i*0.1, 2) for i in range(25)] self.selected_error = DoubleVar(self, value = DEFAULT_TRAINING_ERROR) option_menu = OptionMenu(self, self.selected_error, *error_options, command = self._on_error_selection) option_menu.pack(side = 'right')
def __init__(self, parent): CtxSubPanel.__init__(self, parent) self.radius1 = DoubleVar(self.mw.root, 0) self.radius2 = DoubleVar(self.mw.root, 0) label = TLabel(self.panel, image='context_rect_rx') label.pack(side=LEFT, padx=2) self.entry_radius1 = TSpinbox(self.panel, var=0, vartype=1, textvariable=self.radius1, min=0, max=100, step=1, width=6, command=self.applyRadius1) self.entry_radius1.pack(side=LEFT, padx=2) tooltips.AddDescription(self.entry_radius1, _('Horizontal radius of rounded corners')) #-------------- sep = FlatFrame(self.panel, width=4, height=2) sep.pack(side=LEFT) #-------------- label = TLabel(self.panel, image='context_rect_ry') label.pack(side=LEFT, padx=2) self.entry_radius2 = TSpinbox(self.panel, var=0, vartype=1, textvariable=self.radius2, min=0, max=100, step=1, width=6, command=self.applyRadius1) self.entry_radius2.pack(side=LEFT, padx=2) tooltips.AddDescription(self.entry_radius2, _('Vertical radius of rounded corners')) self.ReSubscribe()
def __init__(self, master, temp, MW, Kow, density, sfont): """Constructor method.""" self.version = 'CapSim 3.3' #system.version self.fonttype = 'Arial 10' #system.fonttype self.master = master self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.sfont = sfont self.temp = temp self.MW = MW self.Kow = Kow self.density = density self.Dw = DoubleVar() self.Dwoptions = ['Hayduk and Laudie', 'None'] self.Dwoption = StringVar(value=self.Dwoptions[0]) self.Koc = DoubleVar() self.Kocoptions = ['Baker', 'PAH', 'PCB', 'None'] self.Kocoption = StringVar(value=self.Kocoptions[0]) self.Kdoc = DoubleVar() self.Kdocoptions = ['Burkhard', 'PAH', 'PCB', 'None'] self.Kdocoption = StringVar(value=self.Kdocoptions[0]) self.top = None
def __init__(self, master, system, solid): """Constructor method. Defines the parameters to be obtained in this window.""" self.master = master self.fonttype = system.fonttype self.version = system.version self.superfont = get_superfont(self.fonttype) #superscript font self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.top = None #flag for existence of toplevel# self.name = StringVar(value=solid.name) #stores the chemical name self.e = DoubleVar(value=solid.e) #stores the porosity self.rho = DoubleVar(value=solid.rho) #stores the bulk density self.foc = DoubleVar( value=solid.foc) #stores the organic carbon fraction self.tort = StringVar( value=solid.tort) #stores the default tortuosity correction self.sorp = StringVar( value=solid.sorp) #stores the default sorption correction self.Ref = StringVar( value=solid.Ref) #stores the default sorption correction self.cancelflag = 0
def __init__(self, pype, toplevel=False, filename=False, num_sequences=10, run_tag=''): ''' ''' self.pype = pype self.toplevel = toplevel self.keep_runningVar = BooleanVar(value=True) self.extend_runVar = BooleanVar(value=False) self.run_typeVar = StringVar(value="/tmp/") self.run_tagVar = StringVar(value=run_tag) self.num_sequencesVar = IntVar(value=num_sequences) self.sequence_spacingVar = DoubleVar(value=0) self.len_sequenceVar = DoubleVar() self.stateVar = StringVar(value='done') self.conf_filename = StringVar(value='') self.params = {} self.runthread = multiprocessing.Process() self._GetParamFuncs() if toplevel: self._BuildGui()
class TrainingError(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent training_error_laber = Label(self, text = 'Training Error: ') training_error_laber.pack(side = 'left') error_options = [round(0.1 + i*0.1, 2) for i in range(25)] self.selected_error = DoubleVar(self, value = DEFAULT_TRAINING_ERROR) option_menu = OptionMenu(self, self.selected_error, *error_options, command = self._on_error_selection) option_menu.pack(side = 'right') def get(self): return self.selected_error.get() def reset(self): self.selected_error.set(DEFAULT_TRAINING_ERROR) def _on_error_selection(self, selected_error): print "Selected training error: ", selected_error
def __init__(self, master, system, layer, layers, editflag): """Constructor method. Defines the parameters to be obtained in this window.""" self.master = master self.fonttype = system.fonttype self.version = system.version self.superfont = get_superfont(self.fonttype) #superscript font self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.top = None #flag for existence of toplevel# self.system = system self.lengthunit = system.lengthunit self.layer = layer self.layers = layers self.types = [] self.tort_types = [] self.torts = layer.torts self.h = DoubleVar(value=10.0) self.alpha = DoubleVar(value=1.0) self.doc = DoubleVar(value=0.0) for matrix in system.matrices: self.types.append(matrix.name) self.tort_types.append(matrix.components[0].tort) self.type = StringVar(value=self.types[0]) self.tort = StringVar(value=self.tort_types[0]) self.editflag = editflag self.cancelflag = 0 if self.editflag == 1: self.type.set(layer.type) self.tort.set(layer.tort) self.h.set(layer.h) self.alpha.set(layer.alpha) self.doc.set(layer.doc) self.names = [] if len(layers) == 0: self.names.append('Deposition') self.names.append('Layer 1') else: for layer in self.layers: self.names.append(layer.name) self.names.append('Layer ' + str(layers[-1].number + 1)) if self.names[0] == 'Deposition': self.names.remove(self.names[0]) else: self.names.insert(0, 'Deposition') if self.editflag == 0: self.name = StringVar(value=self.names[-1]) else: self.name = StringVar(value=self.layer.name)
class TrainingError(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent training_error_laber = Label(self, text='Training Error: ') training_error_laber.pack(side='left') error_options = [round(0.1 + i * 0.1, 2) for i in range(25)] self.selected_error = DoubleVar(self, value=DEFAULT_TRAINING_ERROR) option_menu = OptionMenu(self, self.selected_error, *error_options, command=self._on_error_selection) option_menu.pack(side='right') def get(self): return self.selected_error.get() def reset(self): self.selected_error.set(DEFAULT_TRAINING_ERROR) def _on_error_selection(self, selected_error): print "Selected training error: ", selected_error
def __init__(self, parent): CtxSubPanel.__init__(self, parent) self.angle = DoubleVar(self.mw.root) self.angle.set(0) label = TLabel(self.panel, image='context_R') label.pack(side=LEFT) self.entry_width = TSpinbox(self.panel, var=0, vartype=1, textvariable=self.angle, min=-360, max=360, step=1, width=6, command=self.applyRotate) tooltips.AddDescription(self.entry_width, _('Rotation angle')) self.entry_width.pack(side=LEFT, padx=5) b = TButton(self.panel, command=self.rotLeft, style='Toolbutton', image='context_rotate_ccw') tooltips.AddDescription(b, _(u'Rotate -90°')) b.pack(side=LEFT) b = TButton(self.panel, command=self.rot180, style='Toolbutton', image='context_rotate') tooltips.AddDescription(b, _(u'Rotate 180°')) b.pack(side=LEFT) b = TButton(self.panel, command=self.rotRight, style='Toolbutton', image='context_rotate_cw') tooltips.AddDescription(b, _(u'Rotate 90°')) b.pack(side=LEFT)
def init_tk(self, screen_name=None, geometry=None): self.root = Tk(screenName=screen_name, baseName=self.tk_basename, className=self.tk_class_name) app.root = self.root from sk1.managers.uimanager import UIManager app.uimanager = UIManager(self.root) self.splash = SplashScreen(self.root) self.splash.show() self.splash.set_val(.1, 'DialogManager initialization...') from sk1.managers.dialogmanager import DialogManager app.dialogman = DialogManager(self.root) self.splash.set_val(.15, 'Setting appication data...') app.info1 = StringVar(self.root, '') app.info2 = StringVar(self.root, '') app.info3 = DoubleVar(self.root, 0) # Reset locale again to make sure we get properly translated # messages if desired by the user. For some reason it may # have been reset by Tcl/Tk. # if this fails it will already have failed in # app/__init__.py which also prints a warning. try: import locale except ImportError: pass else: try: locale.setlocale(locale.LC_MESSAGES, "") except: pass if not geometry: # try to read geometry from resource database geometry = self.root.option_get('geometry', 'Geometry') if geometry: try: self.root.geometry(geometry) except TclError: sys.stderr.write('%s: invalid geometry specification %s' % (self.tk_basename, geometry))
def create_length_widgets(top, master, command): var_number = DoubleVar(top) var_unit = StringVar(top) var_length = LengthVar(1.0, config.preferences.default_unit, var_number, var_unit, command=command) entry = TSpinbox(master, textvariable=var_number, vartype=1, min=0, max=50000, step=.1, width=6, command=var_length.UpdateNumber) unitlabel = UnitLabel(master) return var_length, entry, unitlabel
def __init__(self, master, version, fonttype, timeunit, chemicals, kdecays): """Constructor method.""" self.version = version self.fonttype = fonttype self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.superfont = get_superfont(self.fonttype) self.cancelflag = 0 self.timeunit = timeunit self.chemicals = chemicals self.kdecays = [] for n in range(len(self.chemicals)): self.kdecays.append(DoubleVar(value=kdecays[n]))
def __init__(self, master, system, isotherm, coef): """Constructor method. Makes the GUI using the list of "Layer" objects "layers." """ self.master = master self.fonttype = system.fonttype self.version = system.version self.superfont = get_superfont(self.fonttype) self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.bgcolor = self.frame.cget('bg') self.top = None self.concunit = system.concunit self.timeunit = system.timeunit self.cinit = DoubleVar(value = coef[0]) self.qinit = DoubleVar(value = coef[1]) self.thalf = DoubleVar(value = coef[2]) self.ksorp = DoubleVar(value = coef[3]) self.coef = coef self.isotherms = ['Linear--Kd specified', 'Linear--Kocfoc', 'Freundlich', 'Langmuir'] self.isotherm = isotherm if self.isotherm == self.isotherms[0]: self.Kd = coef[4] if self.isotherm == self.isotherms[1]: self.Kd = 10 ** coef[4]*coef[5] if self.isotherm == self.isotherms[2]: self.Kf = coef[4] self.N = coef[5] if self.isotherm == self.isotherms[3]: self.qmax = coef[4] self.b = coef[5] self.epsilon = coef[6] self.rho = coef[7]
def __init__(self, layer, player, D, U, R, lengthunitconverter, timeunit='yr'): self.name = layer.name self.h = layer.h delz_temp = self.h / player if delz_temp > 1: self.delz = (round(delz_temp, 3)) else: j = 2 while delz_temp / 100 < 0.1**j: j = j + 1 self.delz = (round(delz_temp, j)) self.Pe = round(U * self.delz / min(D) * lengthunitconverter, 2) delt_temp = min([ R[n] * self.delz**2 / 2. / D[n] * lengthunitconverter**2 for n in range(len(D)) ]) if delt_temp > 1: self.delt = (round(delt_temp, 3)) else: j = 2 while delt_temp / 100 < 0.1**j: j = j + 1 self.delt = (round(delt_temp, j)) if layer.number == 0: self.dep = 1 self.player = DoubleVar(value=player) self.delt = 'NA' else: self.dep = 0 self.player = IntVar(value=player) self.timeunit = timeunit
def __init__(self, master, system, matrix, matrices, materials, editflag, newflag): """Constructor method. Defines the parameters to be obtained in this window.""" self.master = master self.fonttype = system.fonttype self.version = system.version self.superfont = get_superfont(self.fonttype) #superscript font self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.top = None #flag for existence of toplevel# self.matrix = matrix self.matrices = matrices self.materials = materials self.matrices_list = self.materials.keys() self.matrices_list.sort() for matrix in (self.matrices): if matrix.number <> self.matrix.number and len( matrix.components) == 1 and self.matrices_list.count( matrix.name) > 0: self.matrices_list.remove(matrix.name) self.model = StringVar( value='Linear') #Define the imaginary model for the components self.name = StringVar(value=self.matrices_list[0]) #matrix name self.e = DoubleVar(value=0.5) #stores the porosity self.rho = DoubleVar(value=1.0) #stores the bulk density self.foc = DoubleVar(value=0.01) #stores the organic carbon fraction self.editflag = editflag self.newflag = newflag self.cancelflag = 0 if editflag == 0: self.components = [MatrixComponent(1)] #Define components if editflag == 1: #Detemine whether the chemical is added or edited self.components = self.matrix.components self.name.set(self.matrix.name) self.model.set(self.matrix.model) self.e.set(self.matrix.e) self.rho.set(self.matrix.rho) self.foc.set(self.matrix.foc)
def __init__(self, master, system, matrix, matrices, materials, editflag): """Constructor method. Defines the parameters to be obtained in this window.""" self.master = master self.fonttype = system.fonttype self.version = system.version self.superfont = get_superfont(self.fonttype) #superscript font self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.top = None #flag for existence of toplevel# self.matrix = matrix self.matrices = matrices self.materials = materials self.mixing_models = ['Linear', 'None'] self.name = StringVar(value='Mixture') #matrix name self.model = StringVar(value=self.mixing_models[0]) #model name self.e = DoubleVar() #stores the porosity self.rho = DoubleVar() #stores the bulk density self.foc = DoubleVar() #stores the organic carbon fraction self.components = [] #components self.editflag = editflag self.cancelflag = 0 if editflag == 1: #Detemine whether the chemical is added or edited for component in self.matrix.components: self.components.append(component.copy()) self.components[-1].name = StringVar( value=self.components[-1].name) self.components[-1].mfraction = DoubleVar( value=self.components[-1].mfraction) self.name.set(self.matrix.name) self.model.set(self.matrix.model) self.e.set(self.matrix.e) self.rho.set(self.matrix.rho) self.foc.set(self.matrix.foc)
def __init__(self, parent): CtxSubPanel.__init__(self, parent) self.angle=DoubleVar(self.mw.root) self.angle.set(0) label = TLabel(self.panel, image='context_R') label.pack(side = LEFT) self.entry_width = TSpinbox(self.panel, var=0, vartype=1, textvariable = self.angle, min = -360, max = 360, step = 1, width = 6, command = self.applyRotate) tooltips.AddDescription(self.entry_width, _('Rotation angle')) self.entry_width.pack(side = LEFT, padx=5) b = TButton(self.panel, command=self.rotLeft, style='Toolbutton', image='context_rotate_ccw') tooltips.AddDescription(b, _(u'Rotate -90°')) b.pack(side = LEFT) b = TButton(self.panel, command=self.rot180, style='Toolbutton', image='context_rotate') tooltips.AddDescription(b, _(u'Rotate 180°')) b.pack(side = LEFT) b = TButton(self.panel, command=self.rotRight, style='Toolbutton', image='context_rotate_cw') tooltips.AddDescription(b, _(u'Rotate 90°')) b.pack(side = LEFT)
def set_tk_var(): global method method = StringVar() method.set(read_config("Config", "Method", "str")) global server server = StringVar() server.set(read_config("Config", "Server", "str")) global shelltype shelltype = StringVar() shelltype.set(read_config("Config", "ShellType", "str")) global parameter parameter = StringVar() parameter.set(read_config("Config", "Parameter", "str")) global thread_num thread_num = IntVar() thread_num.set(read_config("Config", "ThreadNumber", "int")) global req_delay req_delay = DoubleVar() req_delay.set(read_config("Config", "RequestDelay", "float")) global time_out time_out = DoubleVar() time_out.set(read_config("Config", "RequestTimeout", "float")) global random_ua random_ua = BooleanVar() random_ua.set(read_config("Config", "RandomUserAgent", "boolean")) global con_close con_close = BooleanVar() con_close.set(read_config("Config", "ConnectionClose", "boolean")) global keep_alive keep_alive = BooleanVar() keep_alive.set(read_config("Config", "KeepAlive0", "boolean")) global custom_hdr custom_hdr = BooleanVar() custom_hdr.set(read_config("Config", "CustomRequestHeader", "boolean")) global custom_hdr_data custom_hdr_data = StringVar() custom_hdr_data.set(read_config("Config", "CustomRequestHeaderData", "str"))
def initialise_textvariables(self): self.tool_dia = DoubleVar() self.tool_dia.set(0.0) self.start_rad = DoubleVar() self.start_rad.set(0.0) self.axis3_retract = DoubleVar() self.axis3_retract.set(0.0) self.axis3_safe_margin = DoubleVar() self.axis3_safe_margin.set(0.0) self.axis3_slice_depth = DoubleVar() self.axis3_slice_depth.set(0.0) self.axis3_mill_depth = DoubleVar() self.axis3_mill_depth.set(0.0) self.F_G1_Depth = DoubleVar() self.F_G1_Depth.set(0.0) self.F_G1_Plane = DoubleVar() self.F_G1_Plane.set(0.0)
def init_ui(self): self.parent.title('Fake Device') self.style = Style() self.style.theme_use('default') self.pack(fill=BOTH, expand=1) x_scale = Scale(self, from_=self.MIN_X, to=self.MAX_X, command=self.on_scale_x) x_scale.place(x=0, y=0) y_scale = Scale(self, from_=self.MIN_Y, to=self.MAX_Y, command=self.on_scale_y) y_scale.place(x=0, y=20) z_scale = Scale(self, from_=self.MIN_Z, to=self.MAX_Z, command=self.on_scale_z) z_scale.place(x=0, y=40) angle_scale = Scale(self, from_=0, to=math.pi/2, command=self.on_scale_angle) angle_scale.place(x=0, y=80) self.x_var = IntVar() self.x_label = Label(self, text=0, textvariable=self.x_var) self.x_label.place(x=100, y=0) self.y_var = IntVar() self.y_label = Label(self, text=0, textvariable=self.y_var) self.y_label.place(x=100, y=20) self.z_var = IntVar() self.z_label = Label(self, text=0, textvariable=self.z_var) self.z_label.place(x=100, y=40) self.angle_var = DoubleVar() self.angle_label = Label(self, text=0, textvariable=self.angle_var) self.angle_label.place(x=100, y=80) self.button = Button(self, text='test', command=self.on_button) self.button.place(x=0, y=100)
def init(self, master): PluginPanel.init(self, master) root = self.mw.root self.var_angle = DoubleVar(root) self.var_angle.set(0) self.var_width_number = DoubleVar(root) self.var_height_number = DoubleVar(root) self.var_width_base = DoubleVar(root) self.var_height_base = DoubleVar(root) self.cnt_x_absolute = None self.cnt_y_absolute = None var_width_unit = StringVar(root) var_height_unit = StringVar(root) unit = config.preferences.default_unit self.var_width = LengthVar(10, unit, self.var_width_number, var_width_unit) self.var_height = LengthVar(10, unit, self.var_height_number, var_height_unit) jump = config.preferences.default_unit_jump self.var_width.set(0) self.var_height.set(0) self.var_width_base.set(0) self.var_height_base.set(0) self.var_position = StringVar(root) self.var_position.set(ABSOLUTE) self.var_basepoint = StringVar(root) self.var_basepoint.set("C") # --------------------------------------------------------- top = TFrame(self.panel, style="FlatFrame") top.pack(side=TOP, fill=BOTH) # --------------------------------------------------------- angle_frame = TFrame(top, style="FlatFrame", borderwidth=3) angle_frame.pack(side=TOP, fill=BOTH) label = TLabel(angle_frame, style="FlatLabel", text=" " + _("Angle:") + " ") label.pack(side=LEFT, padx=5) self.entry_angle = TSpinbox( angle_frame, var=0, vartype=1, textvariable=self.var_angle, min=-360, max=360, step=5, width=6, command=self.apply_rotate, ) self.entry_angle.pack(side=LEFT, anchor=E) label = TLabel(angle_frame, style="FlatLabel", text=_("deg")) label.pack(side=LEFT, padx=5) # --------------------------------------------------------- label = TLabel(top, style="FlatLabel", text=_("Center:")) label.pack(side=TOP, fill=BOTH, padx=5) # --------------------------------------------------------- # Horisontal size_frameH = TFrame(top, style="FlatFrame", borderwidth=3) size_frameH.pack(side=TOP, fill=BOTH) label = TLabel(size_frameH, style="FlatLabel", image="center_h") label.pack(side=LEFT, padx=5) self.entry_width = TSpinbox( size_frameH, var=0, vartype=1, textvariable=self.var_width_number, min=-50000, max=50000, step=jump, width=10, command=self.apply_rotate, ) self.entry_width.pack(side=LEFT) self.labelwunit = TLabel(size_frameH, style="FlatLabel", text=self.var_width.unit) self.labelwunit.pack(side=LEFT, padx=5) # --------------------------------------------------------- # Vertical size_frameV = TFrame(top, style="FlatFrame", borderwidth=3) size_frameV.pack(side=TOP, fill=BOTH) label = TLabel(size_frameV, style="FlatLabel", image="center_v") label.pack(side=LEFT, padx=5) self.entry_height = TSpinbox( size_frameV, var=0, vartype=1, textvariable=self.var_height_number, min=-50000, max=50000, step=jump, width=10, command=self.apply_rotate, ) self.entry_height.pack(side=LEFT) self.labelhunit = TLabel(size_frameV, style="FlatLabel", text=self.var_height.unit) self.labelhunit.pack(side=LEFT, padx=5) # --------------------------------------------------------- # position chek self.position_check = TCheckbutton( top, text=_("Absolute Center"), variable=self.var_position, onvalue=ABSOLUTE, offvalue=RELATIVE, command=self.position, ) self.position_check.pack(side=TOP, anchor=W, padx=5, pady=5) # --------------------------------------------------------- # Basepoint check label = TLabel(top, style="FlatLabel", text=_("Basepoint:")) label.pack(side=TOP, fill=BOTH, padx=5) basepoint_frame = TLabelframe(top, labelwidget=label, style="Labelframe", borderwidth=4) basepoint_frame.pack(side=TOP, fill=X, padx=5, pady=2) self.Basepoint = BasePointSelector(basepoint_frame, anchor=self.var_basepoint, command=self.apply_basepoint) self.Basepoint.pack(side=LEFT, fill=BOTH, padx=5) label = TLabel(basepoint_frame, style="FlatLabel", image="coordinate_deg") label.pack(side=LEFT, fill=BOTH, padx=10) self.position_check.pack(side=TOP, anchor=W, padx=5, pady=5) # --------------------------------------------------------- # Button frame button_frame = TFrame(top, style="FlatFrame", borderwidth=5) button_frame.pack(side=BOTTOM, fill=BOTH) self.update_buttons = [] self.button = UpdatedButton(top, text=_("Apply"), command=self.apply_rotate) self.button.pack(in_=button_frame, side=BOTTOM, expand=1, fill=X, pady=3) self.button_copy = UpdatedButton(top, text=_("Apply to Copy"), command=self.apply_to_copy) self.button_copy.pack(in_=button_frame, side=BOTTOM, expand=1, fill=X) self.init_from_doc() self.subscribe_receivers()
class RotatePanel(PluginPanel): name = "Rotate" title = _("Rotate") def init(self, master): PluginPanel.init(self, master) root = self.mw.root self.var_angle = DoubleVar(root) self.var_angle.set(0) self.var_width_number = DoubleVar(root) self.var_height_number = DoubleVar(root) self.var_width_base = DoubleVar(root) self.var_height_base = DoubleVar(root) self.cnt_x_absolute = None self.cnt_y_absolute = None var_width_unit = StringVar(root) var_height_unit = StringVar(root) unit = config.preferences.default_unit self.var_width = LengthVar(10, unit, self.var_width_number, var_width_unit) self.var_height = LengthVar(10, unit, self.var_height_number, var_height_unit) jump = config.preferences.default_unit_jump self.var_width.set(0) self.var_height.set(0) self.var_width_base.set(0) self.var_height_base.set(0) self.var_position = StringVar(root) self.var_position.set(ABSOLUTE) self.var_basepoint = StringVar(root) self.var_basepoint.set("C") # --------------------------------------------------------- top = TFrame(self.panel, style="FlatFrame") top.pack(side=TOP, fill=BOTH) # --------------------------------------------------------- angle_frame = TFrame(top, style="FlatFrame", borderwidth=3) angle_frame.pack(side=TOP, fill=BOTH) label = TLabel(angle_frame, style="FlatLabel", text=" " + _("Angle:") + " ") label.pack(side=LEFT, padx=5) self.entry_angle = TSpinbox( angle_frame, var=0, vartype=1, textvariable=self.var_angle, min=-360, max=360, step=5, width=6, command=self.apply_rotate, ) self.entry_angle.pack(side=LEFT, anchor=E) label = TLabel(angle_frame, style="FlatLabel", text=_("deg")) label.pack(side=LEFT, padx=5) # --------------------------------------------------------- label = TLabel(top, style="FlatLabel", text=_("Center:")) label.pack(side=TOP, fill=BOTH, padx=5) # --------------------------------------------------------- # Horisontal size_frameH = TFrame(top, style="FlatFrame", borderwidth=3) size_frameH.pack(side=TOP, fill=BOTH) label = TLabel(size_frameH, style="FlatLabel", image="center_h") label.pack(side=LEFT, padx=5) self.entry_width = TSpinbox( size_frameH, var=0, vartype=1, textvariable=self.var_width_number, min=-50000, max=50000, step=jump, width=10, command=self.apply_rotate, ) self.entry_width.pack(side=LEFT) self.labelwunit = TLabel(size_frameH, style="FlatLabel", text=self.var_width.unit) self.labelwunit.pack(side=LEFT, padx=5) # --------------------------------------------------------- # Vertical size_frameV = TFrame(top, style="FlatFrame", borderwidth=3) size_frameV.pack(side=TOP, fill=BOTH) label = TLabel(size_frameV, style="FlatLabel", image="center_v") label.pack(side=LEFT, padx=5) self.entry_height = TSpinbox( size_frameV, var=0, vartype=1, textvariable=self.var_height_number, min=-50000, max=50000, step=jump, width=10, command=self.apply_rotate, ) self.entry_height.pack(side=LEFT) self.labelhunit = TLabel(size_frameV, style="FlatLabel", text=self.var_height.unit) self.labelhunit.pack(side=LEFT, padx=5) # --------------------------------------------------------- # position chek self.position_check = TCheckbutton( top, text=_("Absolute Center"), variable=self.var_position, onvalue=ABSOLUTE, offvalue=RELATIVE, command=self.position, ) self.position_check.pack(side=TOP, anchor=W, padx=5, pady=5) # --------------------------------------------------------- # Basepoint check label = TLabel(top, style="FlatLabel", text=_("Basepoint:")) label.pack(side=TOP, fill=BOTH, padx=5) basepoint_frame = TLabelframe(top, labelwidget=label, style="Labelframe", borderwidth=4) basepoint_frame.pack(side=TOP, fill=X, padx=5, pady=2) self.Basepoint = BasePointSelector(basepoint_frame, anchor=self.var_basepoint, command=self.apply_basepoint) self.Basepoint.pack(side=LEFT, fill=BOTH, padx=5) label = TLabel(basepoint_frame, style="FlatLabel", image="coordinate_deg") label.pack(side=LEFT, fill=BOTH, padx=10) self.position_check.pack(side=TOP, anchor=W, padx=5, pady=5) # --------------------------------------------------------- # Button frame button_frame = TFrame(top, style="FlatFrame", borderwidth=5) button_frame.pack(side=BOTTOM, fill=BOTH) self.update_buttons = [] self.button = UpdatedButton(top, text=_("Apply"), command=self.apply_rotate) self.button.pack(in_=button_frame, side=BOTTOM, expand=1, fill=X, pady=3) self.button_copy = UpdatedButton(top, text=_("Apply to Copy"), command=self.apply_to_copy) self.button_copy.pack(in_=button_frame, side=BOTTOM, expand=1, fill=X) self.init_from_doc() self.subscribe_receivers() ############################################################################### def subscribe_receivers(self): self.document.Subscribe(SELECTION, self.Update) self.document.Subscribe(EDITED, self.update_var) config.preferences.Subscribe(CHANGED, self.update_pref) def unsubscribe_receivers(self): self.document.Unsubscribe(SELECTION, self.Update) self.document.Unsubscribe(EDITED, self.update_var) config.preferences.Unsubscribe(CHANGED, self.update_pref) def init_from_doc(self, *arg): self.Update() def Update(self, *arg): if self.is_selection(): self.entry_angle.set_state(NORMAL) self.entry_width.set_state(NORMAL) self.entry_height.set_state(NORMAL) self.position_check["state"] = NORMAL self.button["state"] = NORMAL self.button_copy["state"] = NORMAL self.TestBasepoint() else: self.entry_angle.set_state(DISABLED) self.entry_width.set_state(DISABLED) self.entry_height.set_state(DISABLED) self.position_check["state"] = DISABLED self.button["state"] = DISABLED self.button_copy["state"] = DISABLED self.update_pref() def apply_basepoint(self): self.update_var() def position(self): self.update_var() def RotateSelected(self, angle, cnt=None): text = _("Rotation") if self.document.selection: self.document.begin_transaction(text) try: try: if cnt is None: cnt = self.document.selection.coord_rect.center() angle = angle * degrees trafo = Rotation(angle, cnt) self.document.TransformSelected(trafo, text) except: self.document.abort_transaction() finally: self.document.end_transaction() def RotateAndCopy(self, angle, cnt=None): text = _("Rotation&Copy") if self.document.selection: self.document.begin_transaction(text) try: try: if cnt is None: cnt = self.document.selection.coord_rect.center() angle = angle * degrees trafo = Rotation(angle, cnt) self.document.ApplyToDuplicate() self.document.TransformSelected(trafo, text) except: self.document.abort_transaction() finally: self.document.end_transaction() def apply_rotate(self, *arg): if self.button["state"] == DISABLED: return try: var_x = self.var_width.get() var_y = self.var_height.get() var_a = self.var_angle.get() except: return if var_a < 0: if var_a < -360: var_a += int(var_a / 360) * 360 var_a += 360 if self.var_basepoint.get() != "USER": self.cnt_x_absolute, self.cnt_y_absolute = self.coordinates(ABSOLUTE) self.var_basepoint.set("USER") if self.var_width_base != var_x or self.var_height_base != var_y: if self.var_position.get() == ABSOLUTE: self.cnt_x_absolute = var_x self.cnt_y_absolute = var_y else: x, y = self.coordinates(ABSOLUTE, "C") self.cnt_x_absolute = var_x + x self.cnt_y_absolute = var_y + y self.var_basepoint.set("USER") if arg and arg[0] == "Duplicate": self.RotateAndCopy(var_a, Point(self.cnt_x_absolute, self.cnt_y_absolute)) else: self.RotateSelected(var_a, Point(self.cnt_x_absolute, self.cnt_y_absolute)) def apply_to_copy(self): self.apply_rotate("Duplicate") def coordinates(self, position, anchor=None): br = self.document.selection.coord_rect hor_sel = br.right - br.left ver_sel = br.top - br.bottom if position == RELATIVE: left, bottom = -hor_sel / 2.0, -ver_sel / 2.0 else: left, bottom = br.left, br.bottom cnt_x, cnt_y = self.Basepoint.get_basepoint(hor_sel, ver_sel, left, bottom, anchor) return cnt_x, cnt_y def TestBasepoint(self): if self.cnt_x_absolute is None: return base = ["C", "NW", "N", "NE", "W", "E", "SW", "S", "SE"] for b in xrange(len(base)): cnt_x, cnt_y = self.coordinates(ABSOLUTE, base[b]) if round(cnt_x, 2) == round(self.cnt_x_absolute, 2) and round(cnt_y, 2) == round(self.cnt_y_absolute, 2): self.var_basepoint.set(base[b]) return self.var_basepoint.set("USER") def update_pref(self, *arg): self.labelwunit["text"] = config.preferences.default_unit self.labelhunit["text"] = config.preferences.default_unit self.entry_width.step = config.preferences.default_unit_jump self.entry_height.step = config.preferences.default_unit_jump self.update_var() def update_var(self, *arg): if len(self.document.selection.GetInfo()): self.var_width.unit = config.preferences.default_unit self.var_height.unit = config.preferences.default_unit if self.var_basepoint.get() == "USER": if self.var_position.get() == ABSOLUTE: self.var_width.set(self.cnt_x_absolute) self.var_height.set(self.cnt_y_absolute) else: x, y = self.coordinates(ABSOLUTE, "C") self.var_width.set(self.cnt_x_absolute - x) self.var_height.set(self.cnt_y_absolute - y) else: x, y = self.coordinates(self.var_position.get()) self.var_width.set(x) self.var_height.set(y) self.var_width_base = self.var_width.get() self.var_height_base = self.var_height.get() def is_selection(self): return len(self.document.selection) > 0
class ConfigClass: def __init__(self,textbox,FOLDER,APPNAME): self.folder=os.path.join(FOLDER,'config') self.appname=APPNAME # Das Standard App Verzeichniss fuer das Betriebssystem abfragen self.make_settings_folder() # eine ConfigParser Instanz oeffnen und evt. vorhandenes Config File Laden self.parser = ConfigParser.ConfigParser() self.cfg_file_name=self.appname+'_config.cfg' self.parser.read(os.path.join(self.folder,self.cfg_file_name)) # Falls kein Config File vorhanden ist oder File leer ist neue File anlegen und neu laden if len(self.parser.sections())==0: self.make_new_Config_file() self.parser.read(os.path.join(self.folder,self.cfg_file_name)) textbox.prt((_('\nNo config file found generated new on at: %s') \ %os.path.join(self.folder,self.cfg_file_name))) else: textbox.prt((_('\nLoading config file:%s') \ %os.path.join(self.folder,self.cfg_file_name))) #Tkinter Variablen erstellen zur späteren Verwendung in den Eingabefeldern self.get_all_vars() #DEBUG INFORMATIONEN #Übergeben des geladenen Debug Level textbox.set_debuglevel(DEBUG=self.debug) textbox.prt(_('\nDebug Level: %i') %(self.debug),1) textbox.prt(str(self),1) def make_settings_folder(self): # create settings folder if necessary try: os.mkdir(self.folder) except OSError: pass def make_new_Config_file(self): #Generelle Einstellungen für Export self.parser.add_section('General') self.parser.set('General', 'write_to_stdout', 0) self.parser.add_section('Paths') self.parser.set('Paths', 'load_path', 'C:\Users\Christian Kohloeffel\Documents\DXF2GCODE\trunk\dxf') self.parser.set('Paths', 'save_path', 'C:\Users\Christian Kohloeffel\Documents') self.parser.add_section('Import Parameters') self.parser.set('Import Parameters', 'point_tolerance', 0.01) self.parser.set('Import Parameters', 'fitting_tolerance', 0.01) self.parser.set('Import Parameters', 'spline_check',1) self.parser.add_section('Tool Parameters') self.parser.set('Tool Parameters', 'diameter', 2.0) self.parser.set('Tool Parameters', 'start_radius', 0.2) self.parser.add_section('Plane Coordinates') self.parser.set('Plane Coordinates', 'axis1_start_end', 0) self.parser.set('Plane Coordinates', 'axis2_start_end', 0) self.parser.add_section('Depth Coordinates') self.parser.set('Depth Coordinates', 'axis3_retract', 15) self.parser.set('Depth Coordinates', 'axis3_safe_margin', 3.0) self.parser.set('Depth Coordinates', 'axis3_mill_depth', -3.0) self.parser.set('Depth Coordinates', 'axis3_slice_depth', -1.5) self.parser.add_section('Feed Rates') self.parser.set('Feed Rates', 'f_g1_depth', 150) self.parser.set('Feed Rates', 'f_g1_plane', 400) self.parser.add_section('Axis letters') self.parser.set('Axis letters', 'ax1_letter', 'X') self.parser.set('Axis letters', 'ax2_letter', 'Y') self.parser.set('Axis letters', 'ax3_letter', 'Z') self.parser.add_section('Route Optimisation') self.parser.set('Route Optimisation', 'Begin art','heurestic') self.parser.set('Route Optimisation', 'Max. population', 20) self.parser.set('Route Optimisation', 'Max. iterations', 300) self.parser.set('Route Optimisation', 'Mutation Rate', 0.95) self.parser.add_section('Filters') self.parser.set('Filters', 'pstoedit_cmd','C:\Program Files (x86)\pstoedit\pstoedit') self.parser.set('Filters', 'pstoedit_opt', ['-f','dxf','-mm']) self.parser.add_section('Debug') self.parser.set('Debug', 'global_debug_level', 0) open_file = open(os.path.join(self.folder,self.cfg_file_name), "w") self.parser.write(open_file) open_file.close() def get_all_vars(self): #try: self.write_to_stdout=int(self.parser.get('General', 'write_to_stdout')) self.tool_dia=DoubleVar() self.tool_dia.set(float(self.parser.get('Tool Parameters','diameter'))) self.start_rad=DoubleVar() self.start_rad.set(float(self.parser.get('Tool Parameters','start_radius'))) self.axis1_st_en=DoubleVar() self.axis1_st_en.set(float(self.parser.get('Plane Coordinates','axis1_start_end'))) self.axis2_st_en=DoubleVar() self.axis2_st_en.set(float(self.parser.get('Plane Coordinates','axis2_start_end'))) self.axis3_retract=DoubleVar() self.axis3_retract.set(float(self.parser.get('Depth Coordinates','axis3_retract'))) self.axis3_safe_margin=DoubleVar() self.axis3_safe_margin.set(float(self.parser.get('Depth Coordinates','axis3_safe_margin'))) self.axis3_slice_depth=DoubleVar() self.axis3_slice_depth.set(float(self.parser.get('Depth Coordinates','axis3_slice_depth'))) self.axis3_mill_depth=DoubleVar() self.axis3_mill_depth.set(float(self.parser.get('Depth Coordinates','axis3_mill_depth'))) self.F_G1_Depth=DoubleVar() self.F_G1_Depth.set(float(self.parser.get('Feed Rates','f_g1_depth'))) self.F_G1_Plane=DoubleVar() self.F_G1_Plane.set(float(self.parser.get('Feed Rates','f_g1_plane'))) self.points_tolerance=DoubleVar() self.points_tolerance.set(float(self.parser.get('Import Parameters','point_tolerance'))) self.fitting_tolerance=DoubleVar() self.fitting_tolerance.set(float(self.parser.get('Import Parameters','fitting_tolerance'))) self.spline_check=int(self.parser.get('Import Parameters', 'spline_check') ) #Zuweisen der Werte fuer die TSP Optimierung self.begin_art=self.parser.get('Route Optimisation', 'Begin art') self.max_population=int((int(self.parser.get('Route Optimisation', 'Max. population'))/4)*4) self.max_iterations=int(self.parser.get('Route Optimisation', 'Max. iterations')) self.mutate_rate=float(self.parser.get('Route Optimisation', 'Mutation Rate', 0.95)) #Zuweisen der Axis Letters self.ax1_letter=self.parser.get('Axis letters', 'ax1_letter') self.ax2_letter=self.parser.get('Axis letters', 'ax2_letter') self.ax3_letter=self.parser.get('Axis letters', 'ax3_letter') #Holen der restlichen Variablen #Verzeichnisse self.load_path=self.parser.get('Paths','load_path') self.save_path=self.parser.get('Paths','save_path') #Holen der Commandos fuer pstoedit self.pstoedit_cmd=self.parser.get('Filters','pstoedit_cmd') self.pstoedit_opt=self.parser.get('Filters','pstoedit_opt') #Setzen des Globalen Debug Levels self.debug=int(self.parser.get('Debug', 'global_debug_level')) # except: # showerror(_("Error during reading config file"), _("Please delete or correct\n %s")\ # %(os.path.join(self.folder,self.cfg_file_name))) # raise Exception, _("Problem during import from INI File") # def __str__(self): str='' for section in self.parser.sections(): str= str +"\nSection: "+section for option in self.parser.options(section): str= str+ "\n -> %s=%s" % (option, self.parser.get(section, option)) return str
def get_all_vars(self): #try: self.write_to_stdout=int(self.parser.get('General', 'write_to_stdout')) self.tool_dia=DoubleVar() self.tool_dia.set(float(self.parser.get('Tool Parameters','diameter'))) self.start_rad=DoubleVar() self.start_rad.set(float(self.parser.get('Tool Parameters','start_radius'))) self.axis1_st_en=DoubleVar() self.axis1_st_en.set(float(self.parser.get('Plane Coordinates','axis1_start_end'))) self.axis2_st_en=DoubleVar() self.axis2_st_en.set(float(self.parser.get('Plane Coordinates','axis2_start_end'))) self.axis3_retract=DoubleVar() self.axis3_retract.set(float(self.parser.get('Depth Coordinates','axis3_retract'))) self.axis3_safe_margin=DoubleVar() self.axis3_safe_margin.set(float(self.parser.get('Depth Coordinates','axis3_safe_margin'))) self.axis3_slice_depth=DoubleVar() self.axis3_slice_depth.set(float(self.parser.get('Depth Coordinates','axis3_slice_depth'))) self.axis3_mill_depth=DoubleVar() self.axis3_mill_depth.set(float(self.parser.get('Depth Coordinates','axis3_mill_depth'))) self.F_G1_Depth=DoubleVar() self.F_G1_Depth.set(float(self.parser.get('Feed Rates','f_g1_depth'))) self.F_G1_Plane=DoubleVar() self.F_G1_Plane.set(float(self.parser.get('Feed Rates','f_g1_plane'))) self.points_tolerance=DoubleVar() self.points_tolerance.set(float(self.parser.get('Import Parameters','point_tolerance'))) self.fitting_tolerance=DoubleVar() self.fitting_tolerance.set(float(self.parser.get('Import Parameters','fitting_tolerance'))) self.spline_check=int(self.parser.get('Import Parameters', 'spline_check') ) #Zuweisen der Werte fuer die TSP Optimierung self.begin_art=self.parser.get('Route Optimisation', 'Begin art') self.max_population=int((int(self.parser.get('Route Optimisation', 'Max. population'))/4)*4) self.max_iterations=int(self.parser.get('Route Optimisation', 'Max. iterations')) self.mutate_rate=float(self.parser.get('Route Optimisation', 'Mutation Rate', 0.95)) #Zuweisen der Axis Letters self.ax1_letter=self.parser.get('Axis letters', 'ax1_letter') self.ax2_letter=self.parser.get('Axis letters', 'ax2_letter') self.ax3_letter=self.parser.get('Axis letters', 'ax3_letter') #Holen der restlichen Variablen #Verzeichnisse self.load_path=self.parser.get('Paths','load_path') self.save_path=self.parser.get('Paths','save_path') #Holen der Commandos fuer pstoedit self.pstoedit_cmd=self.parser.get('Filters','pstoedit_cmd') self.pstoedit_opt=self.parser.get('Filters','pstoedit_opt') #Setzen des Globalen Debug Levels self.debug=int(self.parser.get('Debug', 'global_debug_level'))
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() self.centerUI(w=560,h=235) def initUI(self): self.parent.title("DBLR for Dummies") self.pack(fill=BOTH, expand=True) #self.columnconfigure(0, weight=1) #self.rowconfigure(0, weight=1) # weight attibute is used to make them growable self.meas = IntVar() self.point = IntVar() self.base_path = StringVar() self.coef = DoubleVar() self.noise = DoubleVar() self.n_sigma = DoubleVar() self.thr1 = DoubleVar() self.thr2 = DoubleVar() self.thr3 = DoubleVar() self.graph_sw = BooleanVar() #Image factor=0.65 search = Image.open("NEXT_official_logo.jpg") width_org, height_org = search.size search_temp = search.resize((int(width_org*factor), int(height_org*factor)), Image.ANTIALIAS) search_aux = ImageTk.PhotoImage(search_temp) label1 = Label(self, image=search_aux) label1.image = search_aux label1.grid(row=0, column=4, columnspan=2, rowspan=3, padx=5) #self.base_path.set("F:/DATOS_DAC/2052/pmt_0_trace_evt_") self.base_path.set("Argon.h5.z") e1 = Entry(self, textvariable=self.base_path, width=40) e1.grid(row=0,column=1, sticky=W, columnspan=3, pady=5, padx=5) e1_label = Label(self, text="Path & Name") e1_label.grid(row=0,column=0, columnspan=1, sticky=E, pady=5, padx=5) self.point.set("0") sb1 = Spinbox(self, from_=0, to=100, width=4, textvariable=self.point) sb1.grid(row=2,column=1, sticky=W, pady=5, padx=5) sb1_label = Label(self, text="PMT") sb1_label.grid(row=2,column=0, padx=5, sticky=E) self.meas.set("0") sb1 = Spinbox(self, from_=0, to=100, width=4, textvariable=self.meas) sb1.grid(row=2,column=3, sticky=W, pady=5, padx=5) sb1_label = Label(self, text="Event") sb1_label.grid(row=2,column=2, padx=5, sticky=E) #Check buttons # cb1 = Checkbutton(self, text="New Graph", variable=self.graph_sw) # cb1.select() # cb1.grid(row=2,column=2, sticky=W) #PARAMETERS Integration_label = Label(self, text="PARAMETERS", font = "Verdana 12 bold") Integration_label.grid(row=3,column=1, padx=5, columnspan = 2, pady=10, sticky=E) self.coef.set("1.65E-3") e2 = Entry(self, width=12, textvariable=self.coef) e2.grid(row=4,column=1, sticky=W, pady=5, padx=5) e2_label = Label(self, text="DBLR Coef") e2_label.grid(row=4,column=0, sticky=E, pady=5, padx=5) self.noise.set("0.75") e3 = Entry(self, width=12, textvariable=self.noise) e3.grid(row=4,column=3, sticky=W, pady=5, padx=5) e3_label = Label(self, text="Noise (LSB)") e3_label.grid(row=4,column=2, sticky=E, pady=5, padx=5) self.n_sigma.set("4") e4 = Entry(self, width=12, textvariable=self.n_sigma) e4.grid(row=4,column=5, sticky=W, pady=5, padx=5) e4_label = Label(self, text="Noise Threshold") e4_label.grid(row=4,column=4, sticky=E, pady=5, padx=5) self.thr1.set("0") e5 = Entry(self, width=12, textvariable=self.thr1) e5.grid(row=5,column=1, sticky=W, pady=5, padx=5) e5_label = Label(self, text="Threshold 1") e5_label.grid(row=5,column=0, sticky=E, pady=5, padx=5) self.thr2.set("0") e6 = Entry(self, width=12, textvariable=self.thr2) e6.grid(row=5,column=3, sticky=W, pady=5, padx=5) e6_label = Label(self, text="Threshold 2") e6_label.grid(row=5,column=2, sticky=E, pady=5, padx=5) self.thr3.set("0") e7 = Entry(self, width=12, textvariable=self.thr3) e7.grid(row=5,column=5, sticky=W, pady=5, padx=5) e7_label = Label(self, text="Threshold 3") e7_label.grid(row=5,column=4, sticky=E, pady=5, padx=5) # Main buttons obtn = Button(self, text="GO!!", command=self.DBLR_f) obtn.grid(row=6, column=4, sticky=E, pady=10) cbtn = Button(self, text="Quit", command=self.quit) cbtn.grid(row=6, column=5, sticky=E, pady=10) hbtn = Button(self, text="Help", command=self.help_f) hbtn.grid(row=6, column=0, sticky=W, pady=10) def help_f(self): top = Toplevel() top.title("HELP") msg = Message(top, width= 500, text="Noise Threshold (NT) - Noise Based Main Threshold \ (Sigmas)\n Threshold 1 - Main Threshold (LSBs) \n Threshold 2 - End of Pulse Error \n \ Threshold 3 - End of Tail Error \n When Thr1 = Thr3 = 0 their values are defined as: \n \ (THR1 = NT (LSBs) / THR3 = NT*NOISE_ADC / 5)") msg.pack() button = Button(top, text="Close", command=top.destroy) button.pack() def DBLR_f(self): global a #if (self.graph_sw.get()==True): b=a a=a+1 #else: # b=0 aux=self.base_path.get() # path=''.join([aux,str(self.meas.get()),'.txt']) # g=pd.read_csv(path) f=read_panel_hdf5(aux, self.point.get(), self.meas.get()) f=4096-f recons,energia = DB.BLR( signal_daq=f.flatten().astype(float), coef=self.coef.get(), n_sigma=self.n_sigma.get(), NOISE_ADC=self.noise.get(), thr1=self.thr1.get(), thr2=self.thr2.get(), thr3=self.thr3.get(), plot=False) plt.figure(a) plt.plot(recons) plt.figtext(0.2,0.75, ('ENERGY = %0.2f ' % (energia))) plt.show() def centerUI(self,w,h): sw = self.parent.winfo_screenwidth() sh = self.parent.winfo_screenheight() x = (sw-w)/2 y = (sh-h)/2 self.parent.geometry('%dx%d+%d+%d' % (w,h,x,y))
class TopoConsole(tk.AppWindow,tk.TkParameterized): """ Main window for the Tk-based GUI. """ def _getmenubar(self): return self.master.menubar menubar = property(_getmenubar) def __getitem__(self,menu_name): """Allow dictionary-style access to the menu bar.""" return self.menubar[menu_name] def __init__(self, root,exit_on_quit=True, **params): tk.AppWindow.__init__(self,root,status=True) tk.TkParameterized.__init__(self,root,**params) # Instead of displaying tracebacks on the commandline, try to display # them on the originating window. # CEBALERT: on destroy(), ought to revert this Tkinter.Misc._report_exception=_tkinter_report_exception self.exit_on_quit = exit_on_quit self.auto_refresh_panels = [] self._init_widgets() self.title(topo.sim.name) # If -g passed *before* scripts on commandline, this is useless. # So topo.misc.commandline sets the title as its last action (if -g) # catch click on the 'x': offers choice to quit or not self.protocol("WM_DELETE_WINDOW",self.quit_topographica) ########## ### Make cascade menus open automatically on linux when the mouse ### is over the menu title. ### [Tkinter-discuss] Cascade menu issue ### http://mail.python.org/pipermail/tkinter-discuss/2006-August/000864.html if topo.tkgui.system_platform is 'linux': activate_cascade = """\ if {[%W cget -type] != {menubar} && [%W type active] == {cascade}} { %W postcascade active } """ self.bind_class("Menu", "<<MenuSelect>>", activate_cascade) ########## # Install warning and message handling from param.parameterized import Parameterized self.__orig_P_warning = Parameterized.warning #self.__orig_P_message = Parameterized.message type.__setattr__(Parameterized,'warning',self.gui_warning) #type.__setattr__(Parameterized,'message',self.gui_message) def gui_warning(self,msg,*args,**kw): stat = self.__get_status_bar() stat.warn(msg%args) self.__orig_P_warning(self,msg,*args,**kw) def gui_message(self,msg,*args,**kw): stat = self.__get_status_bar() stat.message(msg%args) self.__orig_P_message(self,*args) def title(self,t=None): newtitle = "Topographica" if t: newtitle+=": %s" % t tk.AppWindow.title(self,newtitle) def _init_widgets(self): ## CEBALERT: now we can have multiple operations at the same time, ## status bar could be improved to show all tasks? # CEBALERT self.messageBar = self.status self.some_area = DockManager(self) self.some_area.pack(fill="both", expand=1) ### Balloon, for pop-up help self.balloon = tk.Balloon(self.content) ### Top-level (native) menu bar #self.menubar = tk.ControllableMenu(self.content) self.configure(menu=self.menubar) #self.menu_balloon = Balloon(topo.tkgui.root) # no menubar in tile yet # http://news.hping.org/comp.lang.tcl.archive/4679.html self.__simulation_menu() self.__create_plots_menu() self.refresh_plots_menu() self.__help_menu() ### Running the simulation run_frame = Frame(self.content) run_frame.pack(side='top',fill='x',padx=4,pady=8) self.run_frame = run_frame Label(run_frame,text='Run for: ').pack(side=LEFT) self.run_for_var=DoubleVar() self.run_for_var.set(1.0) run_for = tk.TaggedSlider(run_frame, variable=self.run_for_var, tag_width=11, slider_length=150, bounds=(0,20000)) self.balloon.bind(run_for,"Duration to run the simulation, e.g. 0.0500, 1.0, or 20000.") run_for.pack(side=LEFT,fill='x',expand=YES) run_for.tag.bind("<Return>",self.run_simulation) # When return is pressed, the TaggedSlider updates itself...but we also want to run # the simulation in this case. run_frame.optional_action=self.run_simulation go_button = Button(run_frame,text="Go", command=self.run_simulation) go_button.pack(side=LEFT) self.balloon.bind(go_button,"Run the simulation for the specified duration.") self.step_button = Button(run_frame,text="Step",command=self.run_step) self.balloon.bind(self.step_button,"Run the simulation through the time at which the next events are processed.") self.step_button.pack(side=LEFT) self.sizeright() def __simulation_menu(self): """Add the simulation menu options to the menubar.""" simulation_menu = ControllableMenu(self.menubar,tearoff=0) self.menubar.add_cascade(label='Simulation',menu=simulation_menu) simulation_menu.add_command(label='Run script',command=self.run_script) simulation_menu.add_command(label='Save script',command=self.save_script_repr) simulation_menu.add_command(label='Load snapshot',command=self.load_snapshot) simulation_menu.add_command(label='Save snapshot',command=self.save_snapshot) #simulation_menu.add_command(label='Reset',command=self.reset_network) simulation_menu.add_command(label='Test Pattern',command=self.open_test_pattern) simulation_menu.add_command(label='Model Editor',command=self.open_model_editor) simulation_menu.add_command(label='Quit',command=self.quit_topographica) def open_test_pattern(self): return open_plotgroup_panel(TestPattern) def __create_plots_menu(self): """ Add the plot menu to the menubar, with Basic plots on the menu itself and others in cascades by category (the plots come from plotgroup_templates). """ plots_menu = ControllableMenu(self.menubar,tearoff=0) self.menubar.add_cascade(label='Plots',menu=plots_menu) # CEBALERT: should split other menus in same way as plots (create/refresh) def refresh_plots_menu(self): plots_menu = self['Plots'] plots_menu.delete(0,'end') # create menu entries, and get list of categories entries=OrderedDict() # keep the order of plotgroup_templates (which is also KL) categories = [] for label,plotgroup in plotgroups.items(): entries[label] = PlotsMenuEntry(plotgroup) categories.append(plotgroup.category) categories = sorted(set(categories)) # The Basic category items appear on the menu itself. assert 'Basic' in categories, "'Basic' is the category for the standard Plots menu entries." for label,entry in entries.items(): if entry.plotgroup.category=='Basic': plots_menu.add_command(label=label,command=entry.__call__) categories.remove('Basic') plots_menu.add_separator() # Add the other categories to the menu as cascades, and the plots of each category to # their cascades. for category in categories: category_menu = ControllableMenu(plots_menu,tearoff=0) plots_menu.add_cascade(label=category,menu=category_menu) # could probably search more efficiently than this for label,entry in entries.items(): if entry.plotgroup.category==category: category_menu.add_command(label=label,command=entry.__call__) plots_menu.add_separator() plots_menu.add_command(label="Help",command=(lambda x=plotting_help_locations: self.open_location(x))) def __help_menu(self): """Add the help menu options.""" help_menu = ControllableMenu(self.menubar,tearoff=0,name='help') self.menubar.add_cascade(label='Help',menu=help_menu) help_menu.add_command(label='About',command=self.new_about_window) help_menu.add_command(label="User Manual", command=(lambda x=user_manual_locations: self.open_location(x))) help_menu.add_command(label="Tutorials", command=(lambda x=tutorials_locations: self.open_location(x))) help_menu.add_command(label="Examples", command=self.run_example_script) help_menu.add_command(label="Reference Manual", command=(lambda x=reference_manual_locations: self.open_location(x))) help_menu.add_command(label="Topographica.org", command=(lambda x=topo_www_locations: self.open_location(x))) help_menu.add_command(label="Python documentation", command=(lambda x=python_doc_locations: self.open_location(x))) def quit_topographica(self,check=True,exit_status=0): """Quit topographica.""" if not check or (check and tk.askyesno("Quit Topographica","Really quit?")): self.destroy() # matplotlib's tk backend starts its own Tk instances; we # need to close these ourselves (at least to avoid error # message about 'unusual termination' in Windows). try: # not that there should be an error, but just in case... import matplotlib._pylab_helpers for figman in matplotlib._pylab_helpers.Gcf.get_all_fig_managers(): figman.destroy() except: pass self.message("Quit selected%s" % ("; exiting" if self.exit_on_quit else "")) # Workaround for obscure problem on some UNIX systems # as of 4/2007, probably including Fedora Core 5. # On these systems, if Topographica is started from a # bash prompt and then quit from the Tkinter GUI (as # opposed to using Ctrl-D in the terminal), the # terminal would suppress echoing of all future user # input. stty sane restores the terminal to sanity, # but it is not clear why this is necessary. # For more info: # http://groups.google.com/group/comp.lang.python/browse_thread/thread/68d0f33c8eb2e02d if topo.tkgui.system_platform=="linux" and os.getenv('EMACS')!='t': try: os.system("stty sane") except: pass # CEBALERT: re. above. Shouldn't we be able to store the # output of "stty --save" before starting the gui, then # ensure that when the gui exits (however badly it # happens) run "stty saved_settings"? # CEBALERT: there was no call to self.master.destroy() if self.exit_on_quit: sys.exit(exit_status) def run_script(self): """ Dialog to run a user-selected script The script is exec'd in __main__.__dict__ (i.e. as if it were specified on the commandline.) """ script = askopenfilename(initialdir=normalize_path(),filetypes=SCRIPT_FILETYPES) if script in ('',(),None): # (representing the various ways no script was selected in the dialog) self.messageBar.response('Run canceled') else: execfile(script,__main__.__dict__) self.messageBar.response('Ran ' + script) sim_name_from_filename(script) self.title(topo.sim.name) # CEBALERT: duplicates most of run_script() def run_example_script(self): script = askopenfilename(initialdir=topo.misc.genexamples.find_examples(), filetypes=SCRIPT_FILETYPES) if script in ('',(),None): # (representing the various ways no script was selected in the dialog) self.messageBar.response('No example opened') else: execfile(script,__main__.__dict__) self.messageBar.response('Ran ' + script) sim_name_from_filename(script) self.title(topo.sim.name) def save_script_repr(self): script_name = asksaveasfilename(filetypes=SCRIPT_FILETYPES, initialdir=normalize_path(), initialfile=topo.sim.basename()+"_script_repr.ty") if script_name: topo.command.save_script_repr(script_name) self.messageBar.response('Script saved to ' + script_name) def load_snapshot(self): """ Dialog to load a user-selected snapshot (see topo.command.load_snapshot() ). """ snapshot_name = askopenfilename(initialdir=normalize_path(),filetypes=SAVED_FILETYPES) if snapshot_name in ('',(),None): self.messageBar.response('No snapshot loaded.') else: self.messageBar.dynamicinfo('Loading snapshot (may take some time)...') self.update_idletasks() topo.command.load_snapshot(snapshot_name) self.messageBar.response('Loaded snapshot ' + snapshot_name) self.title(topo.sim.name) self.auto_refresh() def save_snapshot(self): """ Dialog to save a snapshot (see topo.command.save_snapshot() ). Adds the file extension .typ if not already present. """ snapshot_name = asksaveasfilename(filetypes=SAVED_FILETYPES, initialdir=normalize_path(), initialfile=topo.sim.basename()+".typ") if snapshot_name in ('',(),None): self.messageBar.response('No snapshot saved.') else: if not snapshot_name.endswith('.typ'): snapshot_name = snapshot_name + SAVED_FILE_EXTENSION self.messageBar.dynamicinfo('Saving snapshot (may take some time)...') self.update_idletasks() topo.command.save_snapshot(snapshot_name) self.messageBar.response('Snapshot saved to ' + snapshot_name) def auto_refresh(self, update=True): """ Refresh all windows in auto_refresh_panels. Panels can add and remove themselves to the list; those in the list will have their refresh() method called whenever this console's autorefresh() is called. """ for win in self.auto_refresh_panels: win.refresh(update) self.set_step_button_state() self.update_idletasks() ### CEBERRORALERT: why doesn't updatecommand("display=True") for an ### orientation preference map measurement work with the ### hierarchical example? I guess this is the reason I thought the ### updating never worked properly (or I really did break it ### recently - or I'm confused)... def refresh_activity_windows(self): """ Update any windows with a plotgroup_key ending in 'Activity'. Used primarily for debugging long scripts that present a lot of activity patterns. """ for win in self.auto_refresh_panels: if re.match('.*Activity$',win.plotgroup.name): win.refresh() self.update_idletasks() def open_model_editor(self): """Start the Model editor.""" return ModelEditor(self) def new_about_window(self): win = tk.AppWindow(self) win.withdraw() win.title("About Topographica") text = Label(win,text=topo.about(display=False),justify=LEFT) text.pack(side=LEFT) win.deiconify() #self.messageBar.message('state', 'OK') def open_location(self, locations): """ Try to open one of the specified locations in a new window of the default browser. See webbrowser module for more information. locations should be a tuple. """ # CB: could have been a list. This is only here because if locations is set # to a string, it will loop over the characters of the string. assert isinstance(locations,tuple),"locations must be a tuple." for location in locations: try: existing_location = resolve_path(location) webbrowser.open(existing_location,new=2,autoraise=True) self.messageBar.response('Opened local file '+existing_location+' in browser.') return ### except: pass for location in locations: if location.startswith('http'): try: webbrowser.open(location,new=2,autoraise=True) self.messageBar.response('Opened remote location '+location+' in browser.') return ### except: pass self.messageBar.response("Could not open any of %s in a browser."%locations) # CEBALERT: need to take care of removing old messages automatically? # (Otherwise callers might always have to pass 'ok'.) def status_message(self,m): self.messageBar.response(m) def run_simulation(self,event=None): # event=None allows use as callback """ Run the simulation for the duration specified in the 'run for' taggedslider. """ fduration = self.run_for_var.get() self.open_progress_window(timer=topo.sim.timer) topo.sim.run_and_time(fduration) self.auto_refresh() # CEBERRORALERT: Step button does strange things at time==0. # E.g. for lissom_oo_or, nothing appears to happen. For # hierarchical, runs to time==10. def run_step(self): if not topo.sim.events: # JP: step button should be disabled if there are no events, # but just in case... return # JPALERT: This should really use .run_and_time() but it doesn't support # run(until=...) topo.sim.run(until=topo.sim.events[0].time) self.auto_refresh() def set_step_button_state(self): if topo.sim.events: self.step_button.config(state=NORMAL) else: self.step_button.config(state=DISABLED) def __get_status_bar(self,i=2): # Hack to find appropriate status bar: Go back through frames # until a widget with a status bar is found, and return it. try: while True: f = sys._getframe(i) if hasattr(f,'f_locals'): if 'self' in f.f_locals: o = f.f_locals['self'] # (temporary hack til ScrolledFrame cleaned up) if o.__class__.__name__!='ScrolledFrame': if hasattr(o,'messageBar'): return o.messageBar elif hasattr(o,'status'): return o.status i+=1 except: pass #print "GUI INTERNAL WARNING: failed to determine window on which to display message." return self.messageBar def open_progress_window(self,timer,title=None): """ Provide a convenient link to progress bars. """ stat = self.__get_status_bar() return stat.open_progress_window(timer=timer,sim=topo.sim)
def test_invalid_value(self): v = DoubleVar(self.root, name='name') self.root.globalsetvar('name', 'value') with self.assertRaises(ValueError): v.get()
class CreateStarDlg(SKModal): title = _("Create Star") def __init__(self, master, **kw): # This constructor is here just for illustration purposes; it's # not really needed here, as it simply passes all parameters on # to the base class' constructor. # # The parameter master is the window this dialog belongs to. It # should normally be the top-level application window. apply(SKModal.__init__, (self, master), kw) def build_dlg(self): # The SKModal constructor automatically calls this method to # create the widgets in the dialog. # # self.top is the top-level window of the dialog. All widgets of # the dialog must contained in it. top = self.top # The rest is normal Tkinter code. self.var_corners = IntVar(top) self.var_corners.set(5) label = Label(top, text = _("Corners"), anchor = 'e') label.grid(column = 0, row = 0, sticky = 'ew') entry = Entry(top, textvariable = self.var_corners, width = 15) entry.grid(column = 1, row = 0, sticky = 'ew') self.var_steps = IntVar(top) self.var_steps.set(2) label = Label(top, text = _("Steps"), anchor = 'e') label.grid(column = 0, row = 1, sticky = 'ew') entry = Entry(top, textvariable = self.var_steps, width = 15) entry.grid(column = 1, row = 1, sticky = 'ew') self.var_radius = DoubleVar(top) self.var_radius.set(100) label = Label(top, text = _("Radius"), anchor = 'e') label.grid(column = 0, row = 2, sticky = 'ew') entry = Entry(top, textvariable = self.var_radius, width = 15) entry.grid(column = 1, row = 2, sticky = 'ew') but_frame = Frame(top) but_frame.grid(column = 0, row = 3, columnspan = 2) button = Button(but_frame, text = _("OK"), command = self.ok) button.pack(side = 'left', expand = 1) # The self.cancel method is provided by the base class and # cancels the dialog. button = Button(but_frame, text = _("Cancel"), command = self.cancel) button.pack(side = 'right', expand = 1) def ok(self, *args): # This method is bound to the OK-button. Its purpose is to # collect the values of the various edit fields and pass them as # one parameter to the close_dlg method. # # close_dlg() saves its parameter and closes the dialog. corners = self.var_corners.get() steps = self.var_steps.get() radius = self.var_radius.get() self.close_dlg((corners, steps, radius))
def initUI(self): self.parent.title("LINEARITY TEST FOR PMT BASES") self.pack(fill=BOTH, expand=True) self.columnconfigure(0, weight=1) #self.rowconfigure(0, weight=1) # weight attibute is used to make them growable # self.graph_cb = BooleanVar() self.init_point = IntVar() self.base_path = StringVar() self.end_point = IntVar() self.step = IntVar() self.n_meas = IntVar() self.inc_point = IntVar() self.coef = DoubleVar() self.noise = DoubleVar() self.thr_sigma = DoubleVar() self.SPE_DAQ = DoubleVar() search = Image.open("next_logo.jpg") search_temp = search.resize((170, 200), Image.ANTIALIAS) search_aux = ImageTk.PhotoImage(search_temp) label1 = Label(self, image=search_aux) label1.image = search_aux label1.grid(row=0, column=0, columnspan=10, rowspan=10, sticky=E+W+S+N) #Text Box self.base_path.set("F:/DATOS_DAC/2052/pmt_0_trace_evt_") e1 = Entry(self, textvariable=self.base_path, width=40) e1.grid(row=1,column=2, sticky=W, columnspan=5, pady=5) e1_label = Label(self, text="DataSet path (including name file)") e1_label.grid(row=0,column=2,sticky=W, columnspan=5, pady=5) #Spin Boxes self.n_meas.set("20") sb1 = Spinbox(self, from_=1, to=1000, width=6, textvariable=self.n_meas) sb1.grid(row=3,column=3, sticky=W) sb1_label = Label(self, text="Measurements") sb1_label.grid(row=2,column=3, padx=0, sticky=W) self.step.set("10") sb2 = Spinbox(self, from_=10, to=200, width=6, textvariable=self.step) sb2.grid(row=3,column=4, sticky=W) sb2_label = Label(self, text="Pulse Width Step") sb2_label.grid(row=2,column=4, padx=0, sticky=W) # INTEGRATION LIMITS Integration_label = Label(self, text="INTEGRATION LIMITS", font = "Verdana 12 bold") Integration_label.grid(row=4,column=3, padx=5, columnspan = 3, pady=10) self.init_point.set("30") sb3 = Spinbox(self, from_=1, to=10000, width=6, textvariable=self.init_point) sb3.grid(row=7,column=3, sticky=W) sb3_label = Label(self, text="Start (usec)") sb3_label.grid(row=6,column=3, padx=0, sticky=W) self.end_point.set("160") sb4 = Spinbox(self, from_=1, to=10000, width=6, textvariable=self.end_point) sb4.grid(row=7,column=4, sticky=W) sb4_label = Label(self, text="End (usec)") sb4_label.grid(row=6,column=4, padx=0, sticky=W) # PARAMETERS Integration_label = Label(self, text="PARAMETERS", font = "Verdana 12 bold") Integration_label.grid(row=8,column=3, padx=5, columnspan = 3, pady=10) self.inc_point.set("3") sb5 = Spinbox(self, from_=1, to=100, width=6, textvariable=self.inc_point) sb5.grid(row=11,column=3, sticky=W) sb5_label = Label(self, text="First point") sb5_label.grid(row=10,column=3, padx=0, sticky=W) self.coef.set("1.636E-3") e6 = Entry(self, width=10, textvariable=self.coef) e6.grid(row=11,column=4, sticky=W) e6_label = Label(self, text="DBLR Coef") e6_label.grid(row=10,column=4, sticky=W) self.noise.set("0.75") e7 = Entry(self, width=10, textvariable=self.noise) e7.grid(row=11,column=5, sticky=W) e7_label = Label(self, text="Noise (LSB)") e7_label.grid(row=10,column=5, sticky=W) self.thr_sigma.set("40") e8 = Entry(self, width=10, textvariable=self.thr_sigma) e8.grid(row=13,column=3, sticky=W) e8_label = Label(self, text="Threshold") e8_label.grid(row=12,column=3, sticky=W) self.SPE_DAQ.set("20.5") e9 = Entry(self, width=10, textvariable=self.SPE_DAQ) e9.grid(row=13,column=4, sticky=W) e9_label = Label(self, text="SPE (LSB)") e9_label.grid(row=12,column=4, sticky=W) # #Check buttons # cb1 = Checkbutton(self, text="MultiGraph Output", variable=self.graph_cb ) # cb1.select() # cb1.grid(row=7,column=6, sticky=W) # Main buttons obtn = Button(self, text="GO!!", command=self.linearity_f) obtn.grid(row=14, column=4, sticky=E, pady=10) cbtn = Button(self, text="Quit", command=self.quit) cbtn.grid(row=14, column=5, sticky=E, pady=10) hbtn = Button(self, text="Help") hbtn.grid(row=14, column=0, sticky=W, pady=10)
class ExportParasClass: def __init__(self, frame=None, config=None, postpro=None): self.frame = frame self.initialise_textvariables() self.generate_entryfields(config) #self.change_entry_state(NORMAL) def initialise_textvariables(self): self.tool_dia = DoubleVar() self.tool_dia.set(0.0) self.start_rad = DoubleVar() self.start_rad.set(0.0) self.axis3_retract = DoubleVar() self.axis3_retract.set(0.0) self.axis3_safe_margin = DoubleVar() self.axis3_safe_margin.set(0.0) self.axis3_slice_depth = DoubleVar() self.axis3_slice_depth.set(0.0) self.axis3_mill_depth = DoubleVar() self.axis3_mill_depth.set(0.0) self.F_G1_Depth = DoubleVar() self.F_G1_Depth.set(0.0) self.F_G1_Plane = DoubleVar() self.F_G1_Plane.set(0.0) def generate_entryfields(self, config): self.entries = [] f1 = Frame(self.frame, relief=GROOVE, bd=2) f1.grid(row=1, column=0, padx=2, pady=2, sticky=N + W + E) f2 = Frame(self.frame, relief=GROOVE, bd=2) f2.grid(row=2, column=0, padx=2, pady=2, sticky=N + W + E) f3 = Frame(self.frame, relief=GROOVE, bd=2) f3.grid(row=3, column=0, padx=2, pady=2, sticky=N + W + E) f1.columnconfigure(0, weight=1) f2.columnconfigure(0, weight=1) f3.columnconfigure(0, weight=1) Label(f1, text=_("Tool diameter [mm]:"))\ .grid(row=0, column=0, sticky=N + W, padx=4) self.entries.append(Entry(f1, width=7, textvariable=self.tool_dia, state=DISABLED)) self.entries[-1].grid(row=0, column=1, sticky=N + E) Label(f1, text=_("Start radius (for tool comp.) [mm]:"))\ .grid(row=1, column=0, sticky=N + W, padx=4) self.entries.append(Entry(f1, width=7, textvariable=self.start_rad, state=DISABLED)) self.entries[-1].grid(row=1, column=1, sticky=N + E) Label(f2, text=(_("%s safety margin [mm]:") % config.ax3_letter))\ .grid(row=1, column=0, sticky=N + W, padx=4) self.entries.append(Entry(f2, width=7, textvariable=self.axis3_safe_margin, state=DISABLED)) self.entries[-1].grid(row=1, column=1, sticky=N + E) Label(f2, text=(_("%s infeed depth [mm]:") % config.ax3_letter))\ .grid(row=2, column=0, sticky=N + W, padx=4) self.entries.append(Entry(f2, width=7, textvariable=self.axis3_slice_depth, state=DISABLED)) self.entries[-1].grid(row=2, column=1, sticky=N + E) Label(f2, text=(_("%s mill depth [mm]:") % config.ax3_letter))\ .grid(row=3, column=0, sticky=N + W, padx=4) self.entries.append(Entry(f2, width=7, textvariable=self.axis3_mill_depth, state=DISABLED)) self.entries[-1].grid(row=3, column=1, sticky=N + E) Label(f3, text=(_("G1 feed %s-direction [mm/min]:") % config.ax3_letter))\ .grid(row=1, column=0, sticky=N + W, padx=4) self.entries.append(Entry(f3, width=7, textvariable=self.F_G1_Depth, state=DISABLED)) self.entries[-1].grid(row=1, column=1, sticky=N + E) Label(f3, text=(_("G1 feed %s%s-direction [mm/min]:") % (config.ax1_letter, config.ax2_letter)))\ .grid(row=2, column=0, sticky=N + W, padx=4) self.entries.append(Entry(f3, width=7, textvariable=self.F_G1_Plane, state=DISABLED)) self.entries[-1].grid(row=2, column=1, sticky=N + E) def change_entry_state(self, state=DISABLED): for entry in self.entries: entry.config(state=state) def ShowParas(self, LayerContent): print 'Kommt noch'
class GradientPatternFrame(PatternFrame): def __init__(self, master=None, **kw): apply(PatternFrame.__init__, (self, master), kw) gradient = CreateSimpleGradient(StandardColors.white, StandardColors.black) frame = Frame(self) frame.pack(side = TOP, fill = X) self.var_gradient_type = IntVar(self) for value, bitmap in [(0, 'linear'), (1, 'conical'), (2, 'radial')]: bitmap = getattr(pixmaps, 'gradient_' + bitmap) button = make_button(frame, bitmap = bitmap, value = value, variable = self.var_gradient_type, command = self.choose_type) button.pack(side = LEFT, fill = X, expand = 1) frame = Frame(self) frame.pack(side = TOP, expand = 1, fill = X) self.colors = [None, None] self.colors[0] = ColorButton(frame, height = 1, color = gradient.StartColor(), command = self.set_color, args = 0) self.colors[0].pack(side = LEFT, fill = X, expand = 1) self.colors[1] = ColorButton(frame, height = 1, color = gradient.EndColor(), command = self.set_color, args = 1) self.colors[1].pack(side = LEFT, fill = X, expand = 1) self.var_border = DoubleVar(self) self.var_border.set(0.0) frame = Frame(self) frame.pack(side = TOP, fill = X, expand = 1) label = Label(frame, text = _("Border")) label.pack(side = LEFT, expand = 1, anchor = E) entry = MyEntry(frame, textvariable = self.var_border, width = 4, justify = RIGHT, command = self.set_border) entry.pack(side = LEFT, expand = 1, fill = X) scroll = MiniScroller(frame, variable = self.var_border, min = 0.0, max = 100.0, step = 1.0, command = self.set_border) scroll.pack(side = LEFT, fill = Y) button = UpdatedButton(self, text = _("Edit Gradient"), command = self.edit_gradient) button.pack(side = TOP, fill = X) pattern = LinearGradient(gradient) self.SetPattern(pattern) def set_color(self, idx): self.gradient = self.gradient.Duplicate() self.gradient.SetStartColor(self.__get_color(0)) self.gradient.SetEndColor(self.__get_color(1)) self.pattern = self.pattern.Duplicate() self.pattern.SetGradient(self.gradient) self.issue(CHANGED) def __get_color(self, idx): return self.colors[idx].Color() def choose_type(self): type = gradient_types[self.var_gradient_type.get()] self.pattern = type(duplicate = self.pattern) self.issue(CHANGED) def set_border(self, *rest): border = self.var_border.get() / 100.0 if hasattr(self.pattern, 'SetBorder'): self.pattern = self.pattern.Duplicate() self.pattern.SetBorder(border) self.issue(CHANGED) def SetPattern(self, pattern): PatternFrame.SetPattern(self, pattern) self.gradient = gradient = pattern.Gradient().Duplicate() self.var_gradient_type.set(gradient_types.index(pattern.__class__)) self.colors[0].SetColor(gradient.StartColor()) self.colors[1].SetColor(gradient.EndColor()) if hasattr(pattern, 'Border'): self.var_border.set(pattern.Border() * 100.0) def Center(self): if self.pattern.__class__ == LinearGradient: return (0.5, 0.5) return tuple(self.pattern.Center()) def SetCenter(self, center): if self.pattern.__class__ == LinearGradient: return p = apply(Point, center) self.pattern = self.pattern.Duplicate() self.pattern.SetCenter(p) self.issue(CHANGED) def SetDirection(self, dir): if self.pattern.__class__ == RadialGradient: return dir = apply(Point, dir) self.pattern = self.pattern.Duplicate() self.pattern.SetDirection(dir) self.issue(CHANGED) def EditModes(self): if self.pattern.__class__ == LinearGradient: return (0, 1) elif self.pattern.__class__ == RadialGradient: return (1, 0) else: return (1, 1) def edit_gradient(self): gradient = gradientedit.EditGradient(self, self.gradient) if gradient is not None: pattern = self.pattern.Duplicate() pattern.SetGradient(gradient) self.SetPattern(pattern) self.issue(CHANGED)
class gui(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() self.centerUI(w=600,h=250) def initUI(self): self.parent.title("FIND BLR COEFFICIENT VALUE") self.pack(fill=BOTH, expand=True) self.columnconfigure(0, weight=1) # self.rowconfigure(0, weight=1) # weight attibute is used to make them growable ###### GUI Control Variables ###### self.LIMIT_L = IntVar() self.LIMIT_H = IntVar() self.PULSE_R = IntVar() self.PULSE_L = IntVar() self.pulse_height = DoubleVar() self.hdf5_file = StringVar() self.PMT = IntVar() self.EVENT = IntVar() self.amplitude_range = DoubleVar() self.delta = DoubleVar() self.noise_sigma = DoubleVar() self.coeff = DoubleVar() #self.DRAW = BooleanVar() search = Image.open("next_logo.jpg") search_temp = search.resize((170, 200), Image.ANTIALIAS) search_aux = ImageTk.PhotoImage(search_temp) label1 = Label(self, image=search_aux) label1.image = search_aux label1.grid(row=0, column=0, columnspan=10, rowspan=10, sticky=E+W+S+N) self.hdf5_file.set("2052.h5.z") e1 = Entry(self, textvariable=self.hdf5_file, width=30) e1.grid(row=1,column=1, sticky=W, columnspan=5, pady=5) e1_label = Label(self, text="HDF5 file") e1_label.grid(row=0,column=1,sticky=W, columnspan=5, pady=5) self.PMT.set("0") sb1 = Spinbox(self, from_=0, to=12, width=3, textvariable=self.PMT) sb1.grid(row=3,column=2, sticky=W) sb1_label = Label(self, text="PMT") sb1_label.grid(row=2,column=2, padx=0, sticky=W) self.EVENT.set("0") sb1 = Spinbox(self, from_=0, to=1000, width=5, textvariable=self.EVENT) sb1.grid(row=3,column=3, sticky=W) sb1_label = Label(self, text="EVENT") sb1_label.grid(row=2,column=3, padx=0, sticky=W) self.LIMIT_L.set("19000") sb1 = Spinbox(self, from_=0, to=100000, width=5, textvariable=self.LIMIT_L) sb1.grid(row=5,column=2, sticky=W) sb1_label = Label(self, text="ROI Start ") sb1_label.grid(row=4,column=2, padx=0, sticky=W) self.LIMIT_H.set("22500") sb1 = Spinbox(self, from_=0, to=100000, width=5, textvariable=self.LIMIT_H) sb1.grid(row=5,column=3, sticky=W) sb1_label = Label(self, text="ROI End ") sb1_label.grid(row=4,column=3, padx=0, sticky=W) self.PULSE_R.set("20142") sb1 = Spinbox(self, from_=0, to=100000, width=8, textvariable=self.PULSE_R) sb1.grid(row=5,column=4, sticky=E) sb1_label = Label(self, text=" Pulse Rise") sb1_label.grid(row=4,column=4, padx=0, sticky=E) self.PULSE_L.set("1200") sb1 = Spinbox(self, from_=0, to=5000, width=8, textvariable=self.PULSE_L) sb1.grid(row=5,column=5, sticky=E) sb1_label = Label(self, text=" Pulse Length") sb1_label.grid(row=4,column=5, padx=0, sticky=E) sb1_label = Label(self, text=" ") sb1_label.grid(row=2,column=7, padx=0, sticky=W) sb1_label = Label(self, text=" ") sb1_label.grid(row=6,column=7, padx=0, sticky=W) self.pulse_height.set("545.5") sb1 = Entry(self, width=8, textvariable=self.pulse_height) sb1.grid(row=7,column=3, sticky=E) sb1_label = Label(self, text=" Amplitude") sb1_label.grid(row=6,column=3, padx=0, sticky=E) self.amplitude_range.set("2") sb1 = Entry(self, width=8, textvariable=self.amplitude_range) sb1.grid(row=7,column=4, sticky=E) sb1_label = Label(self, text=" Loop Range") sb1_label.grid(row=6,column=4, padx=0, sticky=E) self.delta.set("0.1") sb1 = Entry(self, width=8, textvariable=self.delta) sb1.grid(row=7,column=5, sticky=E) sb1_label = Label(self, text=" Loop Delta") sb1_label.grid(row=6,column=5, padx=0, sticky=E) self.noise_sigma.set("4") sb1 = Entry(self, width=3, textvariable=self.noise_sigma) sb1.grid(row=5,column=6, sticky=E) sb1_label = Label(self, text=" Noise Threshold") sb1_label.grid(row=4,column=6, padx=0, sticky=E) sb_coeff_label = Label(self, text= "Coefficient ") sb_coeff_label.grid(row=0,column=6, padx=0, sticky=E) self.sb_coeff = Label(self) self.sb_coeff.grid(row=1,column=6, padx=0, sticky=E) # MAIN BUTTONS obtn = Button(self, text="GO!!", command=self.find_C) obtn.grid(row=14, column=4, sticky=E, pady=10) cbtn = Button(self, text="Quit", command=self.quit) cbtn.grid(row=14, column=5, sticky=E, pady=10) hbtn = Button(self, text="Help", command=self.help_f) hbtn.grid(row=14, column=0, sticky=W, pady=10) def help_f(self): top = Toplevel() top.title("HELP") msg = Message(top, width= 500, text="COEFF Calibration Procedure: \n \ Input Start Point and Length of the pulse \n \ Input an initial guess of the pulse amplitude \n \ Use a ROI with at least 1000 samples of baseline \n \ and 1000 samples after pulse end \n \ Adjust loop range and step until a graph error \n \ with a minimum is observed \n \ Refine the search to increase precision") msg.pack() button = Button(top, text="Close", command=top.destroy) button.pack() def find_C(self): draw = False LIMIT_L = self.LIMIT_L.get() #19000 LIMIT_H = self.LIMIT_H.get() #22500 PULSE_R = self.PULSE_R.get() #20142 PULSE_L = self.PULSE_L.get() #1200 pulse_height = self.pulse_height.get() #545 hdf5_file = self.hdf5_file.get() #'2052.h5.z' PMT = self.PMT.get() event = self.EVENT.get() amplitude_range = self.amplitude_range.get() #2 delta = self.delta.get() #0.1 noise_sigma = self.noise_sigma.get() #4 coeff_aux = fc.find_coeff(LIMIT_L, LIMIT_H, PULSE_R, PULSE_L, pulse_height, hdf5_file, PMT, event, amplitude_range, delta, noise_sigma, draw) plt.show() self.sb_coeff.configure(text=str(coeff_aux)) def centerUI(self,w,h): sw = self.parent.winfo_screenwidth() sh = self.parent.winfo_screenheight() x = (sw-w)/2 y = (sh-h)/2 self.parent.geometry('%dx%d+%d+%d' % (w,h,x,y))
def initUI(self): self.parent.title("FIND BLR COEFFICIENT VALUE") self.pack(fill=BOTH, expand=True) self.columnconfigure(0, weight=1) # self.rowconfigure(0, weight=1) # weight attibute is used to make them growable ###### GUI Control Variables ###### self.LIMIT_L = IntVar() self.LIMIT_H = IntVar() self.PULSE_R = IntVar() self.PULSE_L = IntVar() self.pulse_height = DoubleVar() self.hdf5_file = StringVar() self.PMT = IntVar() self.EVENT = IntVar() self.amplitude_range = DoubleVar() self.delta = DoubleVar() self.noise_sigma = DoubleVar() self.coeff = DoubleVar() #self.DRAW = BooleanVar() search = Image.open("next_logo.jpg") search_temp = search.resize((170, 200), Image.ANTIALIAS) search_aux = ImageTk.PhotoImage(search_temp) label1 = Label(self, image=search_aux) label1.image = search_aux label1.grid(row=0, column=0, columnspan=10, rowspan=10, sticky=E+W+S+N) self.hdf5_file.set("2052.h5.z") e1 = Entry(self, textvariable=self.hdf5_file, width=30) e1.grid(row=1,column=1, sticky=W, columnspan=5, pady=5) e1_label = Label(self, text="HDF5 file") e1_label.grid(row=0,column=1,sticky=W, columnspan=5, pady=5) self.PMT.set("0") sb1 = Spinbox(self, from_=0, to=12, width=3, textvariable=self.PMT) sb1.grid(row=3,column=2, sticky=W) sb1_label = Label(self, text="PMT") sb1_label.grid(row=2,column=2, padx=0, sticky=W) self.EVENT.set("0") sb1 = Spinbox(self, from_=0, to=1000, width=5, textvariable=self.EVENT) sb1.grid(row=3,column=3, sticky=W) sb1_label = Label(self, text="EVENT") sb1_label.grid(row=2,column=3, padx=0, sticky=W) self.LIMIT_L.set("19000") sb1 = Spinbox(self, from_=0, to=100000, width=5, textvariable=self.LIMIT_L) sb1.grid(row=5,column=2, sticky=W) sb1_label = Label(self, text="ROI Start ") sb1_label.grid(row=4,column=2, padx=0, sticky=W) self.LIMIT_H.set("22500") sb1 = Spinbox(self, from_=0, to=100000, width=5, textvariable=self.LIMIT_H) sb1.grid(row=5,column=3, sticky=W) sb1_label = Label(self, text="ROI End ") sb1_label.grid(row=4,column=3, padx=0, sticky=W) self.PULSE_R.set("20142") sb1 = Spinbox(self, from_=0, to=100000, width=8, textvariable=self.PULSE_R) sb1.grid(row=5,column=4, sticky=E) sb1_label = Label(self, text=" Pulse Rise") sb1_label.grid(row=4,column=4, padx=0, sticky=E) self.PULSE_L.set("1200") sb1 = Spinbox(self, from_=0, to=5000, width=8, textvariable=self.PULSE_L) sb1.grid(row=5,column=5, sticky=E) sb1_label = Label(self, text=" Pulse Length") sb1_label.grid(row=4,column=5, padx=0, sticky=E) sb1_label = Label(self, text=" ") sb1_label.grid(row=2,column=7, padx=0, sticky=W) sb1_label = Label(self, text=" ") sb1_label.grid(row=6,column=7, padx=0, sticky=W) self.pulse_height.set("545.5") sb1 = Entry(self, width=8, textvariable=self.pulse_height) sb1.grid(row=7,column=3, sticky=E) sb1_label = Label(self, text=" Amplitude") sb1_label.grid(row=6,column=3, padx=0, sticky=E) self.amplitude_range.set("2") sb1 = Entry(self, width=8, textvariable=self.amplitude_range) sb1.grid(row=7,column=4, sticky=E) sb1_label = Label(self, text=" Loop Range") sb1_label.grid(row=6,column=4, padx=0, sticky=E) self.delta.set("0.1") sb1 = Entry(self, width=8, textvariable=self.delta) sb1.grid(row=7,column=5, sticky=E) sb1_label = Label(self, text=" Loop Delta") sb1_label.grid(row=6,column=5, padx=0, sticky=E) self.noise_sigma.set("4") sb1 = Entry(self, width=3, textvariable=self.noise_sigma) sb1.grid(row=5,column=6, sticky=E) sb1_label = Label(self, text=" Noise Threshold") sb1_label.grid(row=4,column=6, padx=0, sticky=E) sb_coeff_label = Label(self, text= "Coefficient ") sb_coeff_label.grid(row=0,column=6, padx=0, sticky=E) self.sb_coeff = Label(self) self.sb_coeff.grid(row=1,column=6, padx=0, sticky=E) # MAIN BUTTONS obtn = Button(self, text="GO!!", command=self.find_C) obtn.grid(row=14, column=4, sticky=E, pady=10) cbtn = Button(self, text="Quit", command=self.quit) cbtn.grid(row=14, column=5, sticky=E, pady=10) hbtn = Button(self, text="Help", command=self.help_f) hbtn.grid(row=14, column=0, sticky=W, pady=10)
filename_button = Button(root, text=names[0], command = lambda : filename_value.set(askopenfilename())) filename_entry = Entry(root, textvariable=filename_value, justify='left') nA_label = Label(root, text=names[1]) nA_value = IntVar(); nA_value.set(nA_default) nA_entry = Entry(root, textvariable=nA_value) nB_label = Label(root, text=names[2]) nB_value = IntVar(); nB_value.set(nB_default) nB_entry = Entry(root, textvariable=nB_value) nobinning_label = Label(root, text='DO NOT USE BINNING') nobinning_value = IntVar(); nobinning_value.set(1) nobinning_check = Checkbutton(root, variable=nobinning_value, onvalue=1, offvalue=0, command=check_binning) p_label = Label(root, text=names[3]) p_value = IntVar(); p_value.set(p_default) p_entry = Entry(root, textvariable=p_value) fbL_label = Label(root, text=names[4]) fbL_value = DoubleVar(); fbL_value.set(fbL_default) fbL_entry = Entry(root, textvariable=fbL_value) fbH_label = Label(root, text=names[5]) fbH_value = DoubleVar(); fbH_value.set(fbH_default) fbH_entry = Entry(root, textvariable=fbH_value) binchoice_label = Label(root, text=names[6]) binchoice_frame = Frame(root) binchoice_value = StringVar() equal = Radiobutton(binchoice_frame,text='equal',variable=binchoice_value,value='equal',command=check_binchoice) equal.select() adaptive = Radiobutton(binchoice_frame,text='adaptive',variable=binchoice_value,value='adaptive',command=check_binchoice) equal.grid(row=0,column=0) adaptive.grid(row=0,column=1) binchoice_frame.grid() fitType_label = Label(root, text=names[7]) fitType_frame = Frame(root)
def _init_widgets(self): ## CEBALERT: now we can have multiple operations at the same time, ## status bar could be improved to show all tasks? # CEBALERT self.messageBar = self.status self.some_area = DockManager(self) self.some_area.pack(fill="both", expand=1) ### Balloon, for pop-up help self.balloon = tk.Balloon(self.content) ### Top-level (native) menu bar #self.menubar = tk.ControllableMenu(self.content) self.configure(menu=self.menubar) #self.menu_balloon = Balloon(topo.tkgui.root) # no menubar in tile yet # http://news.hping.org/comp.lang.tcl.archive/4679.html self.__simulation_menu() self.__create_plots_menu() self.refresh_plots_menu() self.__help_menu() ### Running the simulation run_frame = Frame(self.content) run_frame.pack(side='top',fill='x',padx=4,pady=8) self.run_frame = run_frame Label(run_frame,text='Run for: ').pack(side=LEFT) self.run_for_var=DoubleVar() self.run_for_var.set(1.0) run_for = tk.TaggedSlider(run_frame, variable=self.run_for_var, tag_width=11, slider_length=150, bounds=(0,20000)) self.balloon.bind(run_for,"Duration to run the simulation, e.g. 0.0500, 1.0, or 20000.") run_for.pack(side=LEFT,fill='x',expand=YES) run_for.tag.bind("<Return>",self.run_simulation) # When return is pressed, the TaggedSlider updates itself...but we also want to run # the simulation in this case. run_frame.optional_action=self.run_simulation go_button = Button(run_frame,text="Go", command=self.run_simulation) go_button.pack(side=LEFT) self.balloon.bind(go_button,"Run the simulation for the specified duration.") self.step_button = Button(run_frame,text="Step",command=self.run_step) self.balloon.bind(self.step_button,"Run the simulation through the time at which the next events are processed.") self.step_button.pack(side=LEFT) self.sizeright()
def initUI(self): self.parent.title("DBLR for Dummies") self.pack(fill=BOTH, expand=True) #self.columnconfigure(0, weight=1) #self.rowconfigure(0, weight=1) # weight attibute is used to make them growable self.meas = IntVar() self.point = IntVar() self.base_path = StringVar() self.coef = DoubleVar() self.noise = DoubleVar() self.n_sigma = DoubleVar() self.thr1 = DoubleVar() self.thr2 = DoubleVar() self.thr3 = DoubleVar() self.graph_sw = BooleanVar() #Image factor=0.65 search = Image.open("NEXT_official_logo.jpg") width_org, height_org = search.size search_temp = search.resize((int(width_org*factor), int(height_org*factor)), Image.ANTIALIAS) search_aux = ImageTk.PhotoImage(search_temp) label1 = Label(self, image=search_aux) label1.image = search_aux label1.grid(row=0, column=4, columnspan=2, rowspan=3, padx=5) #self.base_path.set("F:/DATOS_DAC/2052/pmt_0_trace_evt_") self.base_path.set("Argon.h5.z") e1 = Entry(self, textvariable=self.base_path, width=40) e1.grid(row=0,column=1, sticky=W, columnspan=3, pady=5, padx=5) e1_label = Label(self, text="Path & Name") e1_label.grid(row=0,column=0, columnspan=1, sticky=E, pady=5, padx=5) self.point.set("0") sb1 = Spinbox(self, from_=0, to=100, width=4, textvariable=self.point) sb1.grid(row=2,column=1, sticky=W, pady=5, padx=5) sb1_label = Label(self, text="PMT") sb1_label.grid(row=2,column=0, padx=5, sticky=E) self.meas.set("0") sb1 = Spinbox(self, from_=0, to=100, width=4, textvariable=self.meas) sb1.grid(row=2,column=3, sticky=W, pady=5, padx=5) sb1_label = Label(self, text="Event") sb1_label.grid(row=2,column=2, padx=5, sticky=E) #Check buttons # cb1 = Checkbutton(self, text="New Graph", variable=self.graph_sw) # cb1.select() # cb1.grid(row=2,column=2, sticky=W) #PARAMETERS Integration_label = Label(self, text="PARAMETERS", font = "Verdana 12 bold") Integration_label.grid(row=3,column=1, padx=5, columnspan = 2, pady=10, sticky=E) self.coef.set("1.65E-3") e2 = Entry(self, width=12, textvariable=self.coef) e2.grid(row=4,column=1, sticky=W, pady=5, padx=5) e2_label = Label(self, text="DBLR Coef") e2_label.grid(row=4,column=0, sticky=E, pady=5, padx=5) self.noise.set("0.75") e3 = Entry(self, width=12, textvariable=self.noise) e3.grid(row=4,column=3, sticky=W, pady=5, padx=5) e3_label = Label(self, text="Noise (LSB)") e3_label.grid(row=4,column=2, sticky=E, pady=5, padx=5) self.n_sigma.set("4") e4 = Entry(self, width=12, textvariable=self.n_sigma) e4.grid(row=4,column=5, sticky=W, pady=5, padx=5) e4_label = Label(self, text="Noise Threshold") e4_label.grid(row=4,column=4, sticky=E, pady=5, padx=5) self.thr1.set("0") e5 = Entry(self, width=12, textvariable=self.thr1) e5.grid(row=5,column=1, sticky=W, pady=5, padx=5) e5_label = Label(self, text="Threshold 1") e5_label.grid(row=5,column=0, sticky=E, pady=5, padx=5) self.thr2.set("0") e6 = Entry(self, width=12, textvariable=self.thr2) e6.grid(row=5,column=3, sticky=W, pady=5, padx=5) e6_label = Label(self, text="Threshold 2") e6_label.grid(row=5,column=2, sticky=E, pady=5, padx=5) self.thr3.set("0") e7 = Entry(self, width=12, textvariable=self.thr3) e7.grid(row=5,column=5, sticky=W, pady=5, padx=5) e7_label = Label(self, text="Threshold 3") e7_label.grid(row=5,column=4, sticky=E, pady=5, padx=5) # Main buttons obtn = Button(self, text="GO!!", command=self.DBLR_f) obtn.grid(row=6, column=4, sticky=E, pady=10) cbtn = Button(self, text="Quit", command=self.quit) cbtn.grid(row=6, column=5, sticky=E, pady=10) hbtn = Button(self, text="Help", command=self.help_f) hbtn.grid(row=6, column=0, sticky=W, pady=10)