def __init__(self, parent, name, unit, lower, upper, goal, actual): Tix.Frame.__init__(self, parent) self.unit_scale = 1 if unit == 'rad' or unit == 'radians': unit = 'deg' self.unit_scale = math.pi / 180 elif unit == 'm' or unit == 'meters': unit = 'mm' self.unit_scale = 0.001 lower /= self.unit_scale upper /= self.unit_scale goal /= self.unit_scale actual /= self.unit_scale Tix.Label(self, text = '%s [%s] (%5.2f to %5.2f)' % (name, unit, lower, upper), anchor = 'w')\ .pack(side = Tix.TOP, expand = True, fill = Tix.X) self.goal_var = Tix.DoubleVar(self) self.goal_var.set(goal) frame = Tix.Frame(self) Tix.Label(frame, text='goal', width=6).pack(side=Tix.LEFT) self.goal_scale = Tix.Scale(frame, orient=Tix.HORIZONTAL, variable=self.goal_var, showvalue=0, from_=lower, to=upper, command=self._UpdateGoalLabel) self.goal_scale.pack(side=Tix.LEFT, expand=True, fill=Tix.X) self.FORMAT = '%5.2f' self.goal_label = Tix.Label(frame, text=self.FORMAT % goal, width=12) self.goal_label.pack(side=Tix.LEFT) frame.pack(side=Tix.TOP, expand=True, fill=Tix.X) self.actual_var = Tix.DoubleVar(self) self.actual_var.set(actual) frame = Tix.Frame(self) Tix.Label(self, text='actual', width=6).pack(side=Tix.LEFT) self.actual_scale = Tix.Scale(self, orient=Tix.HORIZONTAL, state=Tix.DISABLED, sliderrelief=Tix.FLAT, sliderlength=3, variable=self.actual_var, showvalue=0, from_=lower, to=upper, command=self._UpdateGoalLabel) self.actual_scale.pack(side=Tix.LEFT, expand=True, fill=Tix.X) self.actual_label = Tix.Label(frame, text=self.FORMAT % actual, width=12) self.actual_label.pack(side=Tix.LEFT) frame.pack(side=Tix.TOP, expand=True, fill=Tix.X) self.lower = lower self.upper = upper self.master_var = None
def __init__(self, parent): Tix.Frame.__init__(self, parent) self.slider = [] self.master_override = Tix.IntVar(self) self.master_override.set(0) frame = Tix.Frame(self) frame.pack(side=Tix.TOP, expand=True, fill=Tix.X) self.master_check = Tix.Checkbutton(frame, text='override', variable=self.master_override, command=self.Toggle) self.master_check.pack(side=Tix.LEFT) self.master_var = Tix.DoubleVar(self) self.master_var.set(0) self.master_scale = Tix.Scale(frame, orient=Tix.HORIZONTAL, variable=self.master_var, showvalue=0, from_=0, to=100, command=self._UpdateMaster) self.master_scale.pack(side=Tix.LEFT, expand=True, fill=Tix.X) Tix.Label(frame, textvariable=self.master_var, width=12).pack(side=Tix.LEFT) self.gframe = Tix.Frame(self) self.gframe.pack(side=Tix.TOP, expand=True, fill=Tix.X)
def __init__(self, parent, name, unit, lower, upper, value): Tix.Frame.__init__(self, parent) self.unit_scale = 1 if unit == 'rad' or unit == 'radians': unit = 'deg' self.unit_scale = math.pi / 180 elif unit == 'm' or unit == 'meters': unit = 'mm' self.unit_scale = 0.001 lower /= self.unit_scale upper /= self.unit_scale value /= self.unit_scale Tix.Label(self, text = '%s [%s] (%5.2f to %5.2f)' % (name, unit, lower, upper), anchor = 'w')\ .pack(side = Tix.TOP, expand = True, fill = Tix.X) self.value_var = Tix.DoubleVar(self) self.value_var.set(value) frame = Tix.Frame(self) Tix.Label(frame, text='value', width=6).pack(side=Tix.LEFT) self.value_scale = Tix.Scale(frame, orient=Tix.HORIZONTAL, variable=self.value_var, showvalue=0, from_=lower, to=upper, command=self._UpdateValueLabel) self.value_scale.pack(side=Tix.LEFT, expand=True, fill=Tix.X) self.FORMAT = '%5.2f' self.value_label = Tix.Label(frame, text=self.FORMAT % value, width=12) self.value_label.pack(side=Tix.LEFT) frame.pack(side=Tix.TOP, expand=True, fill=Tix.X) self.lower = lower self.upper = upper self.master_var = None
def __init__(self, parent, prefixes, name, maxvals, gains): if (len(prefixes) != len(maxvals)) or (len(prefixes) != len(gains)): raise 'you gave me %d prefixes, %d maxvals, and %d gains' % ( len(prefixes), len(maxvals), len(gains)) Tix.Frame.__init__(self, parent) self.name = Tix.Label(self, text='name: %s' % name, anchor='w') self.name.pack(side=Tix.TOP, expand=True, fill=Tix.X) self.gain_var = [] self.gain_label = [] self.gain_scale = [] self.master_var = [] for ii in xrange(len(prefixes)): gv = Tix.DoubleVar(self) gv.set(gains[ii]) frame = Tix.Frame(self) Tix.Label(frame, text=prefixes[ii], width=6).pack(side=Tix.LEFT) gs = Tix.Scale(frame, orient=Tix.HORIZONTAL, variable=gv, showvalue=0, from_=0, to=maxvals[ii]) gs.pack(side=Tix.LEFT, expand=True, fill=Tix.X) gl = Tix.Label(frame, textvariable=gv, width=12) gl.pack(side=Tix.LEFT) frame.pack(side=Tix.TOP, expand=True, fill=Tix.X) self.gain_var.append(gv) self.gain_label.append(gl) self.gain_scale.append(gs) self.master_var.append(None)
def __init__(self, w): self.root = w self.exit = -1 global demo_maker, demo_thrust, demo_num_engines demo_maker = Tix.StringVar() demo_thrust = Tix.DoubleVar() demo_num_engines = Tix.IntVar() demo_maker.set('P&W') demo_thrust.set(20000.0) demo_num_engines.set(2) top = Tix.Frame(w, bd=1, relief=Tix.RAISED) # $w.top.a allows only integer values # # [Hint] The -options switch sets the options of the subwidgets. # [Hint] We set the label.width subwidget option of the Controls to # be 16 so that their labels appear to be aligned. # a = Tix.Control(top, label='Number of Engines: ', integer=1, variable=demo_num_engines, min=1, max=4, options='entry.width 10 label.width 20 label.anchor e') b = Tix.Control(top, label='Thrust: ', integer=0, min='10000.0', max='60000.0', step=500, variable=demo_thrust, options='entry.width 10 label.width 20 label.anchor e') c = Tix.Control(top, label='Engine Maker: ', value='P&W', variable=demo_maker, options='entry.width 10 label.width 20 label.anchor e') # We can't define these in the init because the widget 'c' doesn't # exist yet and we need to reference it c['incrcmd'] = lambda w=c: adjust_maker(w, 1) c['decrcmd'] = lambda w=c: adjust_maker(w, -1) c['validatecmd'] = lambda w=c: validate_maker(w) a.pack(side=Tix.TOP, anchor=Tix.W) b.pack(side=Tix.TOP, anchor=Tix.W) c.pack(side=Tix.TOP, anchor=Tix.W) box = Tix.ButtonBox(w, orientation=Tix.HORIZONTAL) box.add('ok', text='Ok', underline=0, width=6, command=self.okcmd) box.add('cancel', text='Cancel', underline=0, width=6, command=self.quitcmd) box.pack(side=Tix.BOTTOM, fill=Tix.X) top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
def __init__(self, parent, lower, upper): Tix.Frame.__init__(self, parent) Tix.Label(self, text = 'goal').pack(side = Tix.TOP, expand = True, fill = Tix.X) goal = (lower + upper) / 2.0 self.goal_var = Tix.DoubleVar(self) self.goal_var.set(goal) frame = Tix.Frame(self) Tix.Label(frame, text = 'goal', width = 6).pack(side = Tix.LEFT) self.goal_scale = Tix.Scale(frame, orient = Tix.HORIZONTAL, variable = self.goal_var, showvalue = 0, from_ = lower, to = upper, command = self._UpdateGoalLabel) self.goal_scale.pack(side = Tix.LEFT, expand = True, fill = Tix.X) self.FORMAT = '%5.2f' self.goal_label = Tix.Label(frame, text = self.FORMAT % goal, width = 12) self.goal_label.pack(side = Tix.LEFT) frame.pack(side = Tix.TOP, expand = True, fill = Tix.X) self.lower = lower self.upper = upper
def __init__(self, parent, prefixes, maxvals): if len(prefixes) != len(maxvals): raise 'you gave me %d prefixes but %d maxvals' % (len(prefixes), len(maxvals)) Tix.Frame.__init__(self, parent) self.gain_slider = [] self.prefixes = prefixes self.maxvals = maxvals self.master_override = [] self.master_check = [] self.master_var = [] self.master_scale = [] for ii in xrange(len(prefixes)): mo = Tix.IntVar(self) mo.set(0) frame = Tix.Frame(self) frame.pack(side=Tix.TOP, expand=True, fill=Tix.X) mc = Tix.Checkbutton(frame, text='master %s' % prefixes[ii], variable=mo, command=partial(self.Toggle, ii)) mc.pack(side=Tix.LEFT) mv = Tix.DoubleVar(self) mv.set(0) ms = Tix.Scale(frame, orient=Tix.HORIZONTAL, variable=mv, showvalue=0, from_=0, to=maxvals[ii]) ms.pack(side=Tix.LEFT, expand=True, fill=Tix.X) Tix.Label(frame, textvariable=mv, width=12).pack(side=Tix.LEFT) self.master_override.append(mo) self.master_check.append(mc) self.master_var.append(mv) self.master_scale.append(ms) self.gframe = Tix.Frame(self) self.gframe.pack(side=Tix.TOP, expand=True, fill=Tix.X)
def createLintWidgets(self): lf = Tix.LabelFrame(self) lf['label'] = 'Lint' lf.pack(side='top',fill='both',expand=1) oe = Tix.FileEntry(lf) oe['dialogtype'] = 'tixExFileSelectDialog' oe['label'] = 'Lint output: (.html)' oe.pack(side='top',fill='x',expand=1) self.lint_output = Tix.StringVar() oe['variable'] = self.lint_output oe['command'] = self.lintOutputChanged if self.conf.has_option('Lint','output'): self.lint_output.set(self.conf.get('Lint','output')) ma = Tix.LabelEntry(lf) ma['label'] = 'Maximum age:' self.max_age = Tix.DoubleVar() ma.entry['textvariable'] = self.max_age self.max_age.set(0.0) ma.pack(side='top') opts = Tix.Select(lf,allowzero=True) opts['label'] = 'Options' opts.add('birth',text='birth') opts.add('death',text='death') opts.pack(side='top',expand=1) self.lint_options = Tix.StringVar() opts['variable'] = self.lint_options lb = Tix.Button(lf) lb['text'] = 'Run Lint' lb['command'] = self.runLint lb.pack(side='right')
def ProbFunc(self, w): self.f_list = Tix.ComboBox( w, label="Function List: ", dropdown=0, command=lambda w=w: self.selectFunc(w), editable=1, variable=self.func, options= 'listbox.height 3 label.padY 5 label.width 10 label.anchor ne') self.f_list.pack(side=Tix.TOP, anchor=Tix.W) self.f_list.insert(Tix.END, 'y**2*sin(pi*x)') self.f_list.insert(Tix.END, '((x-0.5)**2 + (y-0.5)**2 +1)**(1/2.0)') self.f_list.insert(Tix.END, 'cos(x*2*pi)*sin(y*2*pi)') self.f_list.insert(Tix.END, 'exp(-x)*(x+y**3)') self.f_list.insert(Tix.END, 'ln(1+(x-0.5)**2 +(y-0.5)**2)') self.f_list.set_silent('y**2*sin(pi*x)') self.f_list.pack(fill=Tix.X, padx=5, pady=3) x_order = Tix.DoubleVar() y_order = Tix.IntVar() #radio buttons decide whether the function is assigned to solution or source self.func_assign_option = Tix.Select(w, label='Assign function to:', allowzero=1, radio=1) self.func_assign_option.add( 'solution', text='Solution') #command=self.setSolAssign()) self.func_assign_option.add('source', text='Source Function') self.func_assign_option.subwidget_list['solution'].invoke() self.func_assign_opt = self.func_assign_option["value"] xn = Tix.Control(w, label='x order: ', integer=1, variable=x_order, min=0, max=3, command=lambda w=w: self.select_X_order(w), options='entry.width 5 label.width 6 label.anchor e') yn = Tix.Control(w, label='y order: ', integer=1, variable=y_order, min=0, max=3, command=lambda w=w: self.select_Y_order(w), options='entry.width 5 label.width 6 label.anchor e') xn.pack(side=Tix.LEFT, padx=5, pady=3, fill=Tix.X) yn.pack(side=Tix.LEFT, padx=5, pady=3, fill=Tix.X) box = Tix.ButtonBox(w, orientation=Tix.HORIZONTAL) box.add('diff', text='Differentiate', underline=0, width=9, command=self.differentiate_fn) box.pack(side=Tix.BOTTOM, padx=5, pady=3, fill=Tix.X) self.func_assign_option.pack(side=Tix.BOTTOM, padx=5, pady=3, fill=Tix.X)
def __init__(self, parent=None): self.myparent = parent self.myroot = self.myparent.myparent self.tempomaybe = copy.deepcopy(self.myparent.tempolist) self.tempofr = tk.Toplevel(self.myroot, width=480, height=360) self.tempofr.title("Tempo Changes") self.tempofr.rowconfigure(0, weight=1) self.tempofr.rowconfigure(1, weight=0) self.tempofr.columnconfigure(0, weight=1) self.tempobuttons = tk.ButtonBox(self.tempofr, width=480, height=360) self.tempobuttons.add('ok', text='OK', command=self.ok) self.tempobuttons.add('cancel', text='Cancel', command=self.cancel) self.tempobuttons.add('apply', text='Apply', command=self.apply) self.tempobuttons.add('sort', text='Sort', command=self.reorder) self.tempobuttons.grid(row=1, column=0, sticky='') self.canvas = tk.Canvas(self.tempofr, width=480, height=360) self.canvas.grid(row=0, column=0, sticky='nesw') self.canvas.rowconfigure(2, weight=1) self.canvas.columnconfigure(0, weight=1) self.toprow = tk.Frame(self.canvas) self.toprowoncanvas = self.canvas.create_window(0, 0, window=self.toprow, anchor="nw") self.toprow.columnconfigure(0, weight=0) self.toprow.columnconfigure(1, weight=1) self.botrow = tk.Frame(self.canvas, bd=3, relief="ridge") # self.botrow.grid(row=1, column=0, sticky='we') self.botrow.columnconfigure(0, weight=0) self.botrow.columnconfigure(1, weight=1) bottomy = self.toprow.winfo_reqheight() # print bottomy self.botrowoncanvas = self.canvas.create_window(0, bottomy, window=self.botrow, anchor="nw") self.tempolinelist = [] # print self.tempomaybe self.scroll = tk.Scrollbar(self.tempofr, orient='vertical', takefocus=0) self.canvas.config(yscrollcommand=self.scroll.set) self.canvas.config(scrollregion=self.canvas.bbox("all")) self.scroll.config(command=self.canvas.yview) self.tempofr.bind("<Button-4>", lambda event, arg1="scroll", arg2=-1, arg3="units": self.canvas.yview(arg1, arg2, arg3), "+") self.tempofr.bind("<Button-5>", lambda event, arg1="scroll", arg2=1, arg3="units": self.canvas.yview(arg1, arg2, arg3), "+") for tempo in self.tempomaybe: number = self.tempomaybe.index(tempo) newline = self.addtempoline(tempo, number) self.addbar = tk.IntVar() self.addbeat = tk.IntVar() self.addbpm = tk.DoubleVar() self.addunit = tk.IntVar() self.blankbar = tk.Entry(self.botrow, width=4, textvariable=self.addbar) self.blankbar.focus_set() self.blankbar.select_range(0, "end") self.blankbar.grid(padx=10, sticky='') self.blankbeat = tk.Entry(self.botrow, width=3, textvariable=self.addbeat) self.blankbeat.grid(row=0, column=1, padx=10, sticky='') self.blankbpm = tk.Entry(self.botrow, width=5, textvariable=self.addbpm) self.blankbpm.grid(row=0, column=2, padx=10, sticky='') self.blankunit = tk.ComboBox(self.botrow, editable=1, variable=self.addunit, listwidth=8) self.blankunit.entry.configure(width=3) self.blankunit.append_history(1) self.blankunit.append_history(2) self.blankunit.append_history(3) self.blankunit.append_history(4) self.blankunit.append_history(6) self.blankunit.append_history(8) self.blankunit.append_history(12) self.blankunit.append_history(16) self.blankunit.grid(row=0, column=3, padx=10, sticky='') self.blankaddtempo = tk.Button(self.botrow, text="Add Tempo", command=self.newtempo) self.blankaddtempo.grid(row=0, column=4, padx=10, rowspan=1) self.tempofr.update_idletasks() self.tempofr.bind("<Return>", self.ok) self.tempofr.bind("<Escape>", self.cancel)
def __init__(self, parent, tempo, bar, beat, bpm, unit, number): self.myparent = parent self.tempo = tempo self.number = number self.frame = tk.Frame(self.myparent.toprow, bd=4, relief='ridge') self.frame.grid(row=self.number, column=0, sticky='ew') self.bar = tk.IntVar() self.bar.set(bar) self.bar.trace("w", self.barchange) self.barlabel = tk.Label(self.frame, text="Bar:") self.barlabel.grid(row=0, column=0, padx=4, sticky='e') self.barwidget = tk.Control(self.frame, min=1, max=99999, width=4, variable=self.bar) self.barwidget.grid(row=0, column=1, padx=4, sticky='') self.beat = tk.IntVar() self.beat.set(beat) self.beat.trace("w", self.beatchange) self.beatlabel = tk.Label(self.frame, text="Beat:") self.beatlabel.grid(row=0, column=2, padx=4, sticky='e') self.beatwidget = tk.Control(self.frame, min=1, max=32, width=2, variable=self.beat) self.beatwidget.grid(row=0, column=3, padx=4, sticky='') self.bpm = tk.DoubleVar() self.bpm.set(bpm) self.bpm.trace("w", self.bpmchange) self.bpmlabel = tk.Label(self.frame, text="BPM:") self.bpmlabel.grid(row=0, column=4, padx=4, sticky='e') self.bpmwidget = tk.Entry(self.frame, width=4, textvariable=self.bpm) self.bpmwidget.grid(row=0, column=5, padx=4) self.unit = tk.IntVar() self.unit.set(unit) self.unit.trace("w", self.unitchange) self.unitlabel = tk.Label(self.frame, text="Unit:") self.unitlabel.grid(row=0, column=6, padx=4, sticky='e') self.unitwidget = tk.ComboBox(self.frame, variable=self.unit, editable=0) self.unitwidget.entry.configure(width=3) self.unitwidget.append_history(1) self.unitwidget.append_history(2) self.unitwidget.append_history(3) self.unitwidget.append_history(4) self.unitwidget.append_history(6) self.unitwidget.append_history(8) self.unitwidget.append_history(12) self.unitwidget.append_history(16) self.unitwidget.entry.configure(width=3) # for value in ('Sixteenth', 'Dotted Sixteenth', 'Eighth', 'Dotted Eighth', 'Quarter', 'Dotted Quarter', 'Half', 'Dotted Half', 'Whole'): # self.unitwidget.append_history(value) self.unitwidget.grid(row=0, column=7, padx=4, sticky='') self.x = tk.Button(self.frame, text="x", padx=0, pady=0, command=self.remove) self.x.grid(row=0, column=8, sticky='e', padx=40) self.myparent.tempofr.update_idletasks() bottomy = self.myparent.toprow.winfo_reqheight() # print bottomy self.myparent.canvas.coords(self.myparent.botrowoncanvas, 0, bottomy) if self.myparent.scroll.winfo_ismapped(): # print self.page.scroll.get() pass else: self.myparent.tempofr.update_idletasks() # print self.page.scroll.get() if self.myparent.scroll.get() != (0.0, 1.0): self.myparent.scroll.grid(row=1, column=1, sticky='ns') self.myparent.canvas.config( scrollregion=self.myparent.canvas.bbox("all")) self.myparent.canvas.yview_moveto(1.0) if self.myparent.scroll.winfo_ismapped(): # print self.page.scroll.get() pass else: self.myparent.tempofr.update_idletasks() # print self.page.scroll.get() if self.myparent.scroll.get() != (0.0, 1.0): self.myparent.scroll.grid(row=0, column=1, sticky='ns')
def __init__(self, parent, out): self.page = parent self.out = out self.flag = 'c' # self.place = len(self.page.linelist) self.place = self.out.instrument.outlist.index(self.out) self.mute = tk.BooleanVar() self.mute.set(self.out.mute) self.mute.trace("w", self.mutechange) self.solo = tk.BooleanVar() self.solo.set(self.out.solo) self.solo.trace("w", self.solochange) self.volume = tk.DoubleVar() self.volume.set(self.out.volume) self.volume.trace("w", self.volumechange) self.instnum = tk.StringVar() self.instnum.set(self.out.instnum) self.instnum.trace("w", self.instnumchange) self.csdstring = tk.StringVar() self.csdstring.set(self.out.pfields) self.csdstring.trace("w", self.csdstringchange) self.frame = tk.Frame(self.page.toprow, bd=5, relief="ridge") self.frame.grid(row=self.place, column=0, columnspan=2, sticky='ew') self.frame.columnconfigure(0, weight=0) self.frame.columnconfigure(1, weight=0) self.frame.columnconfigure(2, weight=0) self.frame.columnconfigure(3, weight=0) self.frame.columnconfigure(4, weight=0) self.frame.columnconfigure(5, weight=0) self.frame.columnconfigure(6, weight=0) self.frame.columnconfigure(7, weight=0) self.frame.columnconfigure(8, weight=1) self.field1 = tk.Entry(self.frame, width=2) self.field1.grid(row=0, column=0, sticky='w', pady=10, padx=20) self.field1.insert(0, 'c') self.field1.configure(state='disabled') self.mutewidget = tk.Checkbutton(self.frame, height=1, width=1, variable=self.mute, bg='#ffaaaa', selectcolor='#996666', padx=2, pady=0, indicatoron=0, activebackground='#ff8888') self.mutewidget.grid(row=0, column=1, rowspan=1) self.solowidget = tk.Checkbutton(self.frame, height=1, width=1, variable=self.solo, bg='#aaffaa', selectcolor='#669966', padx=2, pady=0, indicatoron=0, activebackground='#88ff88') self.solowidget.grid(row=0, column=2, rowspan=1) self.field2label = tk.Label(self.frame, text="inst") self.field2label.grid(row=0, column=self.page.cc1, rowspan=1, columnspan=self.page.ccs1, sticky='w') self.field2 = tk.Entry(self.frame, width=8, textvariable=self.instnum) self.field2.grid(row=0, column=self.page.cc2, rowspan=1, columnspan=self.page.ccs2, sticky='w') self.field2.focus_set() self.field2.select_range(0, "end") self.field2.bind("<FocusOut>", self.stringupdate) self.field3label = tk.Label(self.frame, text=" time dur ") self.field3label.grid(row=0, column=self.page.cc3, rowspan=1, columnspan=self.page.ccs3) self.field3 = tk.Entry(self.frame, width=30, textvariable=self.csdstring) self.field3.grid(row=0, column=self.page.cc4, rowspan=1, columnspan=self.page.ccs4, sticky='w') self.field3.bind("<FocusOut>", self.stringupdate) self.x = tk.Button(self.frame, text="x", padx=0, pady=0, command=self.remove) self.x.grid(row=0, column=self.page.cc5, sticky='e', padx=40) self.volumewidget = tk.Scale(self.frame, orient="horizontal", width=7, fg='#552288', sliderlength=10, sliderrelief='raised', tickinterval=10, from_=-90, to=10, resolution=.1, variable=self.volume) self.volumewidget.set(self.out.volume) self.volumewidget.grid(row=1, column=0, columnspan=11, sticky='ew', pady=2) self.page.widget.update_idletasks() bottomy = self.page.toprow.winfo_reqheight() self.page.canvas.coords(self.page.botrowoncanvas, 0, bottomy) self.page.canvas.config(scrollregion=self.page.canvas.bbox("all")) self.page.canvas.yview_moveto(1.0) if self.page.scroll.winfo_ismapped(): # print self.page.scroll.get() pass else: self.page.widget.update_idletasks() # print self.page.scroll.get() if self.page.scroll.get() != (0.0, 1.0): self.page.scroll.grid(row=1, column=1, sticky='ns')
def __init__(self, parent, bindir): self.root = parent self.bindir = bindir self.choices_ts = [ 'Displacement (filtered)', 'Acceleration (filtered)', 'Acceleration (unfiltered)' ] self.hist_old = self.choices_ts[0] self.spec_old = self.choices_ts[1] self.p = {} # dictionary to hold all Tk variables self.p['pmax'] = Tk.IntVar() self.p['pmax'].set(0) self.p['fltrng'] = Tk.IntVar() self.p['fltrng'].set(1) self.p['cutrng'] = Tk.IntVar() self.p['cutrng'].set(1) self.p['pltlog2'] = Tk.IntVar() self.p['pltlog2'].set(0) self.p['pltgrid'] = Tk.IntVar() self.p['pltgrid'].set(1) if self.bindir is None: self.choose_bin_directory() if self.bindir == '': sys.exit() ### Window layout setup self.root = parent self.entry_frame = Tk.Frame(root) self.entry_frame.pack(side='top', pady=5) self.eq_frame = Tk.Frame(root, borderwidth=2, relief='sunken') self.eq_frame.pack(side='top', fill=Tk.BOTH, expand=0) self.figure_frame = Tk.Frame(root) self.figure_frame.pack(side='top', anchor='n', expand=1, fill=Tk.BOTH) self.left_frame = Tk.Frame(self.figure_frame) self.left_frame.pack(side='left', anchor='n', expand=1, fill=Tk.BOTH) self.right_frame = Tk.Frame(self.figure_frame) self.right_frame.pack(side='left', anchor='n', expand=1, fill=Tk.BOTH) self.nav_frame = Tk.Frame(self.figure_frame) self.nav_frame.pack(side='right', anchor='center', expand=0, fill='none') self.root.wm_title("Strong motion analyser") self.f1 = Figure(figsize=(5., 5.), dpi=100) self.f2 = Figure(figsize=(6.4, 5.), dpi=100) self.canvas1 = FigureCanvasTkAgg(self.f1, master=self.left_frame) self.canvas2 = FigureCanvasTkAgg(self.f2, master=self.right_frame) self.canvas1.show() self.canvas1.get_tk_widget().pack(side='left', expand=1, fill=Tk.BOTH) self.canvas2.get_tk_widget().pack(side='left', expand=1, fill=Tk.BOTH) toolbar = NavigationToolbar2TkAgg(self.canvas1, self.left_frame) toolbar.update() self.canvas1._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) toolbar1 = NavigationToolbar2TkAgg(self.canvas2, self.right_frame) toolbar1.update() self.canvas2._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) DataHandler.__init__(self, self.bindir) PlotIterator.__init__(self) # Make initial plot of first record self.plotcanvas() # set line length of input file; needed to add comments to line # set number of points variable self.p['starttrim'] = Tk.IntVar() self.p['starttrim'].set(self.startt) self.p['endtrim'] = Tk.IntVar() self.p['endtrim'].set(self.endt) self.p['demean'] = Tk.IntVar() self.p['demean'].set(self.dmn) self.p['detrend'] = Tk.IntVar() self.p['detrend'].set(self.dtrnd) # set filter to default filter self.p['hlow'] = Tk.DoubleVar() self.p['hlow'].set(self.highp[0]) self.p['hhgh'] = Tk.DoubleVar() self.p['hhgh'].set(self.highp[1]) # setting up spin boxes for cutting trim_cntrl_st = Tk.Control(self.entry_frame, label='start', integer=True, step=1, variable=self.p['starttrim']) trim_cntrl_st.entry.config(font=10) trim_cntrl_st.label.config(font=10) trim_cntrl_st.pack(side='left', padx=5) trim_cntrl_ed = Tk.Control(self.entry_frame, label='end', integer=True, step=1, variable=self.p['endtrim']) trim_cntrl_ed.entry.config(font=10) trim_cntrl_ed.label.config(font=10) trim_cntrl_ed.pack(side='left', padx=5) # setting up trim button trim_button = Tk.Button(self.entry_frame, text='Cut', width=8, command=self.recalc, font=10) trim_button.pack(side='left', padx=10) # setting up spin boxes for filtering hp_cntrl_lw = Tk.Control(self.entry_frame, label='cutoff', max=10, min=0, integer=False, step=0.01, variable=self.p['hlow']) hp_cntrl_lw.entry.config(font=10) hp_cntrl_lw.label.config(font=10) hp_cntrl_lw.pack(side='left', padx=5) hp_cntrl_hg = Tk.Control(self.entry_frame, label='corner', max=10, min=0, integer=False, step=0.01, variable=self.p['hhgh']) hp_cntrl_hg.entry.config(font=10) hp_cntrl_hg.label.config(font=10) hp_cntrl_hg.pack(side='left', padx=5) # setting up filter button flt_button = Tk.Button(self.entry_frame, text='Filter', width=8, command=self.recalc, font=10) flt_button.pack(side='left', padx=10) # setting up combo box for spectra spec_box = Tk.ComboBox(self.entry_frame, label='Spectra', editable=False, dropdown=True, command=self.choose_spec, value=self.choices_ts[1]) spec_box.insert('end', self.choices_ts[0]) spec_box.insert('end', self.choices_ts[1]) spec_box.insert('end', self.choices_ts[2]) spec_box.label.config(font=10) spec_box.entry.config(font=10) #spec_box.listbox.config(font=10) spec_box.pack(side='left', padx=10) # setting up combo box for timeseries hist_box = Tk.ComboBox(self.entry_frame, label='Timeseries', editable=False, dropdown=True, command=self.choose_ts, value=self.choices_ts[0]) hist_box.insert('end', self.choices_ts[0]) hist_box.insert('end', self.choices_ts[1]) hist_box.insert('end', self.choices_ts[2]) hist_box.label.config(font=10) hist_box.entry.config(font=10) hist_box.pack(side='left', padx=10) # setting up earthquake info frame self.evtime = Tk.Label(self.eq_frame, text='Event time: %s' % self.v2.stream[0].stats. smdict.eventtime.strftime("%d/%m/%Y %H:%M:%S"), font=10, padx=20) self.evtime.pack(side='left') self.eqdist = Tk.Label(self.eq_frame, text='Epicentral distance: %d km' % self.v2.stream[0].stats.smdict.epicdist, font=10, padx=20) self.eqdist.pack(side='left') self.hdep = Tk.Label(self.eq_frame, text='Hypocentral depth: %d km' % self.v2.stream[0].stats.smdict.hypodep, font=10, padx=20) self.hdep.pack(side='left') self.lmag = Tk.Label(self.eq_frame, text='Local magnitude: %.2f' % self.v2.stream[0].stats.smdict.Ml, font=10, padx=20) self.lmag.pack(side='left') a = self.data[0].split() fname = a[0].split('_') if len(fname) > 3: # building site self.sensname = fname[2] + "/" + fname[3] else: # single instrument accelerometer self.sensname = fname[2] self.sens = Tk.Label(self.eq_frame, text='Sensor name: %s' % self.sensname, font=10, padx=20) self.sens.pack(side='left') # setting up navigation and save button p_button = Tk.Button(self.nav_frame, text='Previous', width=8, command=self.prev, font=10) p_button.pack(side='top', fill='x', anchor='center') n_button = Tk.Button(self.nav_frame, text='Next', width=8, command=self.next, font=10) n_button.pack(side='top', fill='x', anchor='center') n_button = Tk.Button(self.nav_frame, text='Save', width=8, command=self.savefile, font=10) n_button.pack(side='top', fill='x', anchor='center') # setting up radio buttons detrend = Tk.Checkbutton(self.nav_frame, text='Detrend', command=self.recalc, variable=self.p['detrend'], indicatoron=0, width=4, font=10) detrend.pack(side='top', fill='x', anchor='center') baldetrend = Tk.Balloon(self.nav_frame) baldetrend.bind_widget( detrend, balloonmsg= 'Choose whether to subtract linear trend from Volume 1 acceleration timeseries.' ) demean = Tk.Checkbutton(self.nav_frame, text='Demean', command=self.recalc, variable=self.p['demean'], indicatoron=0, width=4, font=10) demean.pack(side='top', fill='x', anchor='center') baldemean = Tk.Balloon(self.nav_frame) baldemean.bind_widget( demean, balloonmsg= 'Choose whether to subtract mean from Volume 1 acceleration timeseries.' ) maxb = Tk.Checkbutton(self.nav_frame, text='Max', command=self.plotmax, variable=self.p['pmax'], indicatoron=0, width=4, font=10) maxb.pack(side='top', fill='x', anchor='center') balmaxb = Tk.Balloon(self.nav_frame) balmaxb.bind_widget(maxb, balloonmsg='Plot maxima of timeseries.') fltrng = Tk.Checkbutton(self.nav_frame, text='Fltrng', command=self.plotfltrng, variable=self.p['fltrng'], indicatoron=0, width=4, font=10) fltrng.pack(side='top', fill='x', anchor='center') balfltrng = Tk.Balloon(self.nav_frame) balfltrng.bind_widget( fltrng, balloonmsg='Plot cutoff and corner frequencies of highpass filter.' ) cutrng = Tk.Checkbutton(self.nav_frame, text='Cutrng', command=self.plotmax, variable=self.p['cutrng'], indicatoron=0, width=4, font=10) cutrng.pack(side='top', fill='x', anchor='center') balcutrng = Tk.Balloon(self.nav_frame) balcutrng.bind_widget(cutrng, balloonmsg='Plot cutting window.') pltlog2 = Tk.Checkbutton(self.nav_frame, text='log2', command=self.plotfltrng, variable=self.p['pltlog2'], indicatoron=0, width=4, font=10) pltlog2.pack(side='top', fill='x', anchor='center') balpltlog2 = Tk.Balloon(self.nav_frame) balpltlog2.bind_widget( pltlog2, balloonmsg= 'Plot line with slope 2.0 through the maximum of the power spectrum.' ) pltgrid = Tk.Checkbutton(self.nav_frame, text='Grid', command=self.plotfltrng, variable=self.p['pltgrid'], indicatoron=0, width=4, font=10) pltgrid.pack(side='top', fill='x', anchor='center') balpltgrid = Tk.Balloon(self.nav_frame) balpltgrid.bind_widget(pltgrid, balloonmsg='Plot grid lines.') # setting up comment button self.p['comment'] = Tk.StringVar() cmnt_button = Tk.Button(self.nav_frame, text='Comment', width=8, command=self.add_comment, font=10) cmnt_button.pack(side='top', fill='x', anchor='center') cmnt_ent = Tk.Entry(self.nav_frame, textvariable=self.p['comment'], width=8) cmnt_ent.pack(side='top', fill='x', anchor='center') balcmnt = Tk.Balloon(self.nav_frame) balcmnt.bind_widget( cmnt_button, balloonmsg= 'Add a comment to the corresponding line in the input file.')
#!/usr/local/bin/python
## print "Exec: ",cmd2 ## os.system(cmd2) ## print "Exec: ",cmd3 ## os.system(cmd3) ## print "Exec: ",cmd5 ## os.system(cmd5) # -- global variables root = Tix.Tk() receiveMode = Tix.StringVar(root) transmitMode = Tix.StringVar(root) oldReceiveMode = 'Hexadecimal' oldTransmitMode = 'Hexadecimal' transmitPacketString = Tix.StringVar(root) maxPacketSize = Tix.IntVar(root) packetTimeout = Tix.DoubleVar(root) portString = Tix.StringVar(root) baudRateString = Tix.StringVar(root) packetHeaderString = Tix.StringVar(root) openOrCloseString = Tix.StringVar(root) receiveFilters = { "ASCII": lambda x: x, "Hexadecimal": binascii.b2a_hex, "Decimal": lambda x: string.rjust(str(ord(x)), 3) } transmitFilters = { "ASCII": lambda x: x, "Hexadecimal": binascii.a2b_hex, "Decimal": lambda x: chr(int(x))