def setgridsize(self, height=5, width=6): self.height = height self.width = width for i in range(1, height): # Rows for j in range(width): # Columns b = Entry(self.root, text="") b.grid(row=i, column=j)
def initUI(self): self.parent.title("Rename file") self.pack(fill=BOTH, expand=1) originLabel = Label(self, text="File: " + self.filename) originLabel.grid(row=0, column=0, columnspan=2) renameLabel = Label(self, text="Rename to:") renameLabel.grid(row=1, column=0, columnspan=2) self.newName = StringVar() self.newName.set(self.filename) newName = Entry(self, textvariable=self.newName, width=80) endpos = self.filename.rfind('.') newName.selection_range(0, endpos if endpos > 0 else END) newName.grid(row=2, column=0, columnspan=2) newName.bind("<Return>", lambda event: self.doRename()) newName.bind("<Escape>", lambda event: self.parent.destroy()) newName.focus_set() okButton = Button(self, text="OK", command=self.doRename) okButton.grid(row=3, column=0) cancelButton = Button(self, text="Cancel", command=self.parent.destroy) cancelButton.grid(row=3, column=1)
class RecordController(Frame): def __init__(self, master, *args, **kwargs): super(RecordController, self).__init__(master, *args, **kwargs) self.master = master self.current_record = 0 self.create_widgets() def create_widgets(self): self.record_label = Label(self, text='Records') self.record_label.grid(column=1, row=1) self.to_beginning_button = Button(self, text='|<') self.to_beginning_button.grid(column=2, row=1) self.to_backone_button = Button(self, text='<') self.to_backone_button.grid(column=3, row=1) self.search_field = Entry(self) self.search_field.grid(column=4, row=1) self.to_fowardone_button = Button(self, text='>') self.to_fowardone_button.grid(column=5, row=1) self.to_end_button = Button(self, text='>|') self.to_end_button.grid(column=6, row=1) def on_get_record_button_press(self, event): if event.widget.text == '|<': self.current_record = 0 elif event.widget.text == '<': self.current_record -= 1 if self.current_record < 0: self.current_record = 0 elif event.widget.text == '>': self.current_record += 1 elif event.widget.text == '>|': self.current_record += 1 # TODO This isnt right for now
class LoginDialog(tkSimpleDialog.Dialog): def body(self, login_frame): Label(login_frame, text='Sie sind noch nicht auf \ http://www.sleeptracker.net eingeloggt!' ).grid(row=0, column=0, columnspan=2, sticky=W + E) Label(login_frame, text='Bitte loggen Sie sich ein.' ).grid(row=1, column=0, columnspan=2, sticky=W + E) Label(login_frame, text='').grid(row=2, column=0) Label(login_frame, text='Benutzername (eMail):' ).grid(row=3, column=0, sticky=W) Label(login_frame, text='Passwort:').grid(row=4, column=0, sticky=W) Label(login_frame, text='').grid(row=5, column=0) self.user = Entry(login_frame) self.user.insert(0, 'Benutzername') self.pwd = Entry(login_frame, show='*') self.pwd.insert(0, '') self.user.grid(row=3, column=1) self.pwd.grid(row=4, column=1) # initial focus return self.user def apply(self): username = str(self.user.get()) password = str(self.pwd.get()) self.result = username, password
def save(squares): """ Handle the save key on the main window. """ def save_button_hit(): """ Save key (on local window) was hit. Save the file name entered. """ text_in = save_entry.get().strip() if len(text_in) == 0: showwarning('Error', 'File name specified is empty.') return outfile = os.path.join(savedir, text_in) with open(outfile, 'w') as fyle: for sqr_info in save_squares: fyle.write('%d:%d:%s\n' % tuple(save_squares[sqr_info])) top.destroy() top = Toplevel() top.geometry('180x80+800+200') top.title('Save a layout') save_squares = squares savedir = getdir() label1 = Label(top, text='File name') save_entry = Entry(top) label1.grid(row=0) save_entry.grid(row=0, column=1, columnspan=2) save_entry.focus_set() save_button = Button(top, text='SAVE', pady=3, command=save_button_hit) sspace = Label(top) sspace.grid(row=1) save_button.grid(row=2, column=1) top.mainloop()
def goto_date_gui(self): date_top = Toplevel() date_top.title("Enter date") date_top.resizable(0, 0) # Inputs for month/year goto_month = Label(date_top, text="Month:") goto_month.grid(row=0, column=0) m_entry = Entry(date_top) m_entry.grid(row=0, column=1) goto_year = Label(date_top, text="Year:") goto_year.grid(row=1, column=0) y_entry = Entry(date_top) y_entry.grid(row=1, column=1) def month_jump(): try: month = int(m_entry.get()) year = int(y_entry.get()) if 0 < month <= 12 and 1970 <= year < 5000: self.calendar.month = month - 1 self.calendar.year = year self.update_calendar() except: pass submit = Button(date_top, text="Submit", command=month_jump) submit.grid(column=0, columnspan=3)
def __init__(self, parent, projects, onCreation=None): Frame.__init__(self, parent) self.onCreation = onCreation self.time = StringVar() self.time.set("00:00:00") self.timeEntry = None self.projects = projects.values() self.projects.sort(key=lambda x: x.name) l = Label(self, text="Description") l.grid(row=0, column=0) self.description = StringVar() e = Entry(self, textvariable=self.description, font=("Helvetica", 16)) e.grid(row=1, column=0) l = Label(self, text="Project") l.grid(row=0, column=1) values = map(lambda x: x.name, self.projects) self.projectChooser = Combobox(self, values=values, font=("Helvetica", 16)) self.projectChooser.grid(row=1, column=1) self.timeEntryClock = Label(self, textvariable=self.time, font=("Helvetica", 16)) self.timeEntryClock.grid(row=1, column=2) self.submitText = StringVar() self.submitText.set("Start") self.submit = Button(self, textvariable=self.submitText, command=self.start, font=("Helvetica", 16)) self.submit.grid(row=1, column=3, padx=10)
class PasswordDialog(Dialog): def __init__(self, title, prompt, parent): self.prompt = prompt Dialog.__init__(self, parent, title) def body(self, master): from Tkinter import Label from Tkinter import Entry from Tkinter import Checkbutton from Tkinter import IntVar from Tkinter import W self.checkVar = IntVar() Label(master, text=self.prompt).grid(row=0, sticky=W) self.e1 = Entry(master) self.e1.grid(row=0, column=1) self.cb = Checkbutton(master, text="Save to keychain", variable=self.checkVar) self.cb.pack() self.cb.grid(row=1, columnspan=2, sticky=W) self.configure(show='*') def apply(self): self.result = (self.e1.get(), self.checkVar.get() == 1)
class ParamItem(Frame): def __init__(self, master, itemList, deleteCount): Frame.__init__(self, master) self.labelKey = Label(self, text = "Key:") self.labelValue = Label(self, text = "Value:") self.entryKey = Entry(self, width = 8) self.entryValue = Entry(self, width = 20) self.deleteCount = deleteCount self.itemList = itemList self.btnDelete = Button(self, text = "delete", \ command = self.__internalDelete, padx = 5) self.__boxComponents() def __boxComponents(self): self.labelKey.grid(row = 0, column = 0) self.entryKey.grid(row = 0, column = 1) self.labelValue.grid(row = 0, column = 2) self.entryValue.grid(row = 0, column = 3) self.btnDelete.grid(row = 0, column = 4) def __internalDelete(self): self.deleteCount.set(self.deleteCount.get() + 1) self.itemList.remove(self) self.destroy() def getKey(self): return self.entryKey.get() def getValue(self): return self.entryValue.get()
def get_name(self): frame = DraggableFrame(self._root) frame.pack(side=TOP, fill=BOTH, expand=YES) frame.columnconfigure(0, weight=1) frame.columnconfigure(4, weight=1) frame.rowconfigure(0, weight=1) frame.rowconfigure(4, weight=1) w = self._set_frame_geo(frame, 0.3, 0.3)[2] self._set_x_button(frame, w, self._close_get_name) Label(frame, text="Name:").grid(column=1, row=1) entry_style = SUNKEN if self._is_osx else FLAT entry = Entry(frame, exportselection=0, relief=entry_style, textvariable=self._name) entry.grid(column=2, row=1) entry.focus_set() error_label = Label(frame, fg='red') error_label.grid(column=1, row=2, columnspan=3) ok_cmd = partial(self._validate_name, error_label) FlatButton(frame, text='OK', width=20, font=("calibri", 15), command=ok_cmd).grid(column=1, row=3, columnspan=3) self._root.bind('<Return>', ok_cmd) self._root.bind('<Escape>', self._close_get_name) self._run() return self._name.get() if self._name else self._name
def special1Case( self ): self.root = Tk() self.root.title('Choose Filter Options') filterCount = 2 winHeight = str(30+(130*filterCount)) self.root.geometry('500x'+winHeight+'-80+80') self.main.filterList = None subjectHeader = StringVar( self.root ) subjectHeader.set( "SubjectID" ) subjectField = StringVar( self.root ) imageHeader = StringVar( self.root ) imageHeader.set( "Image" ) imageField = StringVar( self.root ) self.main.colorUse = StringVar( self.root ) self.main.colorUse.set( "Number" ) self.main.sizeUse = StringVar( self.root ) self.main.sizeUse.set( "Duration" ) self.main.filterUse = StringVar( self.root ) self.main.filterUse.set( "Two" ) emptyFilter = StringVar( self.root ) self.main.axesToPlot = [ None, None ] self.main.axesToPlot[0] = StringVar( self.root ) self.main.axesToPlot[0].set( "x" ) self.main.axesToPlot[1] = StringVar( self.root ) self.main.axesToPlot[1].set( "y" ) Label(self.root, text="Choose a subject and image to view fixation results.").grid(row=0, columnspan=2) Label(self.root, text="Subject:").grid(row=1, column=0, sticky=tk.W) Label(self.root, text="Image:").grid(row=2, column=0, sticky=tk.W) subjectText = Entry( self.root, textvariable=subjectField ) subjectText.grid(row=1, column=1) imageText = Entry( self.root, textvariable=imageField ) imageText.grid(row=2, column=1) subjectFieldList = [ subjectHeader, subjectText, emptyFilter, emptyFilter ] imageFieldList = [ imageHeader, imageText, emptyFilter, emptyFilter ] localFilterList = [ subjectFieldList, imageFieldList ] def callback(): """Handles the button press at the end of the filter function.""" for i in range( len( localFilterList ) ): for j in range( len( localFilterList[0] ) ): localFilterList[i][j] = localFilterList[i][j].get() self.main.filterList = localFilterList self.root.destroy() self.scatterBuild() b1 = Button( self.root, text="View Fixation Results", command=callback ) b1.grid( row=3, columnspan=2 )
class Interface(Frame): """界面操作""" def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.create_widgets() def create_widgets(self): """构建界面""" self.radio_value = IntVar() Label(self, text="网络安全").grid(row=0, column=2, pady=10) # 生成label Label(self, text="用户名").grid(row=3, column=1, pady=10) Label(self, text="密码").grid(row=4, column=1) # 生成用户名和密码输入框 self.name_input = Entry(self) self.name_input.grid(row=3, column=2) self.password = Entry(self) self.password['show'] = '*' self.password.grid(row=4, column=2) self.radio = Radiobutton(self, text="rsa", variable=self.radio_value, padx=20, value=1) self.radio.grid(row=5, column=1) self.radio1 = Radiobutton(self, text="des", variable=self.radio_value, padx=20, value=2) self.radio1.grid(row=6, column=1) self.alert_button = Button(self, text='提交', command=self.submit) self.alert_button.grid(row=7, column=1) def submit(self): """提交处理""" name = self.name_input.get() or 'username' password = self.password.get() or "password" cryption = self.radio_value.get() or "1" # 构造传输的数据 data = name + ',' + password cryption = Crypt() my_socket = Mysocket() # 判断使用des还是rsa if cryption == 2: data = "des" + data need = 8 - (len(data) % 8) while need > 0: data += " " need -= 1 result = cryption.des_encrypt(data) result = "des" + result else: result = cryption.rsa_encrypt(data) result = "rsa" + result result = my_socket.make_connect(result) if result >= 0: tkMessageBox.showinfo('Message', '%s' % '合法用户') else: tkMessageBox.showinfo('Message', '%s' % '非法用户')
def __init__( self, main, dataInstance, axes ): """Initializes the file saving dialog.""" self.main = main self.dataInstance = dataInstance self.axes = axes self.root = Tk() self.root.title( "Save As CSV" ) self.root.geometry( "350x200" ) Label( self.root, text="Choose options for save." ).grid( row=0, columnspan=2 ) Label(self.root, text="Filename").grid( row=1,column=0, sticky=tk.W ) self.main.saveFileName = StringVar( self.root ) fileNameField = Entry( self.root, textvariable=self.main.saveFileName ) fileNameField.grid(row=1, column=1) Label( self.root, text="Number of Columns" ).grid( row=2,column=0, sticky=tk.W ) self.main.numSaveCols = StringVar( self.root ) self.main.numSaveCols.set( "All" ) colNumTuple = ( "All", ) for i in range( len(axes) ): colNumTuple += ( str(i+1), ) w = apply( OptionMenu, ( self.root, self.main.numSaveCols ) + colNumTuple ) w.grid( row=2, column=1 ) def callback(): self.root.destroy() if self.main.numSaveCols.get() == "All": self.main.writeCSVFile() else: self.columnChooser() b1 = Button( self.root, text="Confirm", command=callback ) b1.grid( row=3, columnspan=2 )
def make_entry(self, label, var): l = Label(self.top, text=label) l.grid(row=self.row, column=0, sticky="ne", padx=6, pady=6) e = Entry(self.top, textvariable=var, exportselection=0) e.grid(row=self.row, column=1, sticky="nwe", padx=6, pady=6) self.row = self.row + 1 return e
class encoderface(LabelFrame): def __init__(self, x): LabelFrame.__init__(self, x) # self.default_font = tkFont.nametofont("TkDefaultFont") # self.default_font.configure(family="Helvetica",size=12) self.config(relief=GROOVE) self.config(borderwidth=2, padx=5, pady=5) self.config(text = "Encoder") self.config(labelanchor = "n") self.INSTRUCTION = StringVar() self.INSTRUCTION.set("Instruction") self.machinecode = StringVar() self.machinecode.set("") self.codeEntry = Entry(self, textvariable=self.INSTRUCTION) #self.codeEntry.configure(font=("Helvetica", 12), width=40) self.codeEntry.configure(width=40) self.codeButton = Button(self, text="Compile") self.VHPL = Label(self, text="VHPL") self.codeButton.grid(row=0, column=0, rowspan=4, sticky="wens") self.VHPL.grid(row=0, column=1, sticky="wens") self.VHPL.config(relief=GROOVE, borderwidth=2) self.codeEntry.grid(row=1, column=1, sticky="wens") self.codeEntry.config(fg="green", bg="black") self.pack()
def init_gui(self): ''' Initialize a simple gui. ''' top = Frame(self.master) top.grid(**self.paddingArgs) #====================================================================== # Top frame #====================================================================== info_frame = Frame(top) info_frame.grid(column=0, row=0) text = Label(info_frame, text='OCCI service URL:') text.grid(column=0, row=0, **self.paddingArgs) # self.url.set('http://fjjutraa.joyent.us:8888') self.url.set('http://localhost:8888') entry = Entry(info_frame, width=25, textvariable=self.url) entry.grid(column=1, row=0, **self.paddingArgs) go = Button(info_frame, text='Go', command=self.run_tests) go.grid(column=2, row=0, **self.paddingArgs) reset = Button(info_frame, text='Reset', command=self.reset) reset.grid(column=3, row=0, **self.paddingArgs) #====================================================================== # Test frame #====================================================================== self.test_frame = LabelFrame(top, borderwidth=2, relief='groove', text='Tests') self.test_frame.grid(row=1, **self.paddingArgs) i = 0 for item in self._get_tests().keys(): label = Label(self.test_frame, text=item) label.grid(row=i, sticky=W, **self.paddingArgs) label2 = Label(self.test_frame, text='...') label2.grid(column=1, row=i, sticky=N + E + W + S, **self.paddingArgs) i += 1 #====================================================================== # Bottom #====================================================================== note = 'NOTE: Passing all tests only indicates that the service\n' note += 'you are testing is OCCI compliant - IT DOES NOT GUARANTEE IT!' label = Label(top, text=note) label.grid(row=2, **self.paddingArgs) quit_button = Button(top, text='Quit', command=self.quit) quit_button.grid(row=3, sticky=E, **self.paddingArgs)
def make_entry(self, label, var): "Return gridded labeled Entry." l = Label(self.top, text=label) l.grid(row=self.row, column=0, sticky="nw") e = Entry(self.top, textvariable=var, exportselection=0) e.grid(row=self.row, column=1, sticky="nwe") self.row = self.row + 1 return e
def __init__( self, width, height ): """Initialize the Main Class for VIOLAS Program""" self.root = tk.Tk() self.desiredFile = None self.width = width self.height = height self.root.title("Welcome") w = tk.Message(self.root, text= " \n\n " + " Welcome to V.I.O.L.A.S.!\n\n" + " Visual Information Observation, Logging, \n " " and Analysis System\n\n\n" + " Please choose the desired CSV file you \n" + " would like to analyze! " + " \n\n\n ", background='blue', foreground='white', border=0, width=300, font='courier 12 bold') w.pack() fobj = tkFileDialog.askopenfile( parent=self.root, mode='rb', title='Choose a data file...' ) self.desiredFile = os.path.basename(fobj.name) self.fileNameShort = os.path.splitext(self.desiredFile)[0] self.root.destroy() self.dataHandler = ds.DataSet( self, filename=fobj.name ) self.root = tk.Tk() self.root.title("Configure PCA") self.root.geometry( "350x200-80+80" ) self.pcaCut = StringVar( self.root ) self.pcaCut.set( "Yes" ) Label(self.root, text="Remove Last Column?").grid(row=0) k = apply( OptionMenu, ( self.root, self.pcaCut ) + ( "Yes", "No" ) ) k.grid( row=0, column=1 ) self.pcaNormalize = StringVar( self.root ) self.pcaNormalize.set( "No" ) Label(self.root, text="Normalize Before PCA?").grid(row=1) j = apply( OptionMenu, ( self.root, self.pcaNormalize ) + ( "No", "Yes" ) ) j.grid( row=1, column=1 ) self.varPercent = IntVar( self.root ) self.varPercent.set( 100 ) Label(self.root, text="Minimum Percent Variation").grid(row=2) l = Entry( self.root, textvariable=self.varPercent ) l.grid(row=2, column=1) def callback(): self.root.destroy() pcaData = self.dataHandler.buildPCA( self.dataHandler.numbData ) self.vectorHandler = ds.DataSet( self, passData=pcaData ) print self.eigenList self.initializeGUI( width, height ) b = Button( self.root, text="Continue", command=callback ) b.grid( row=3, columnspan=2 )
def makeROEntry(parent, row, column, label, initVal): lbl = Label(parent, text = label) lbl.grid(row = row, column = column) entry = Entry(parent) entry.grid(row = row, column = column + 1) entry['readonly'] = 'gray10' entry.insert(0, initVal) entry['state'] = 'readonly' return lbl, entry
def __init__(self): window=Tk() window.title('Scientific Calculator') window.configure(background="white") self.string=StringVar() entry=Entry(window,textvariable=self.string) entry.grid(row=0,column=0,columnspan=6) entry.configure(background="white") entry.focus() values=["7","8","9","/","%","clear","AC", "4","5","6","*","(",")","**", "1","2","3","-","=",",","0",".","min","+","sin","asin","cos","acos","tan()", "pow","log10","max","abs","floor","pi","e","log","ceil","degrees","radians"] text=1 i=0 row=1 col=0 for txt in values: padx=10 pady=10 if(i==7): row=2 col=0 if(i==14): row=3 col=0 if(i==19): row=4 col=0 if(i==26): row=5 col=0 if(i==33): row=6 col=0 if(txt=='='): btn=Button(window,height=2,width=4,padx=70,pady=pady,text=txt,command=lambda txt=txt:self.equals()) btn.grid(row=row,column=col,columnspan=3,padx=2,pady=2) btn.configure(background="yellow") elif(txt=='clear'): btn=Button(window,height=2,width=4,padx=padx,pady=pady, text=txt ,command=lambda txt=txt:self.delete()) btn.grid(row=row,column=col,padx=1,pady=1) btn.configure(background="grey") elif(txt=='AC'): btn=Button(window,height=2,width=4,padx=padx,pady=pady,text=txt,command=lambda txt=txt:self.clearall()) btn.grid(row=row,column=col,padx=1,pady=1) btn.configure(background="red") else: btn=Button(window,height=2,width=4,padx=padx,pady=pady,text=txt ,command=lambda txt=txt:self.addChar(txt)) btn.grid(row=row,column=col,padx=1,pady=1) btn.configure(background="cyan") col=col+1 i=i+1 window.mainloop()
class Calculator: def __init__(self, master): self.master = master master.title("Simple Calculator") self.total = 0 self.entered_number = 0 self.total_label_text = IntVar() self.total_label_text.set(self.total) self.total_label = Label(master, textvariable=self.total_label_text) self.label = Label(master, text="Result:") vcmd = master.register(self.validate) self.entry = Entry(master, validate="key", validatecommand=(vcmd, '%P')) self.add_button = Button(master, text="+", command=lambda: self.update("add")) self.subtract_button = Button(master, text="-", command=lambda: self.update("subtract")) self.divide_button = Button(master, text="/", command=lambda: self.update("divide")) self.multipy_button = Button(master, text="*", command=lambda: self.update("multiply")) self.label.grid(row=0, column=0, sticky=W) self.total_label.grid(row=0, column=1, columnspan=4, sticky=E) self.entry.grid(row=1, column=0, columnspan=3, sticky=W+E) self.add_button.grid(row=2, column=0) self.subtract_button.grid(row=2, column=1) self.multiply_button.grid(row=2, column=2) self.divide_button.grid(row=2, column=3) def validate(self, new_text): if not new_text: self.entered_number = 0 return True try: self.entered_number = int(new_text) return True except ValueError: return False def update(self, method): if method == "add": self.total += self.entered_number elif method == "subtract": self.total -= self.entered_number else: # reset self.total = 0 self.total_label_text.set(self.total) self.entry.delete(0, END)
class Scroller(object): """ Scrolls through a solution list. """ def __init__(self, wdw, sols): """ Stores the list of solutions in sols and defines the layout of the GUI. """ wdw.title('solutions scroller') self.sols = sols self.cursor = 0 self.lbl = Label(wdw, text="solution : ") self.lbl.grid(row=0, column=0, sticky=E) self.ent = Entry(wdw) self.ent.grid(row=0, column=1, stick=W) self.ent.insert(INSERT, "0 of %d" % len(sols)) self.myft = Font(family="Courier New", size=12, weight="normal") self.mlen = self.myft.measure("M") lines = sols[0].split('\n') self.width = max([len(line) for line in lines]) self.display = StringVar() self.display.set(self.sols[0]) self.mess = Message(wdw, textvariable=self.display, \ font=self.myft, width=self.width*self.mlen, background='white') self.mess.grid(row=1, column=0, columnspan=2) self.btnext = Button(wdw, command=self.next, text='next') self.btnext.grid(row=2, column=1, sticky=W+E) self.btprev = Button(wdw, command=self.previous, text='previous') self.btprev.grid(row=2, column=0, sticky=W+E) def show(self): """ Shows the solution at position self.cursor in the message widget and updates the entry widget. """ self.display.set(self.sols[self.cursor]) self.ent.delete(0, END) self.ent.insert(INSERT, '%d of %d' % (self.cursor, len(self.sols))) def next(self): """ Increases the cursor by one if possible. """ if self.cursor < len(self.sols) - 1: self.cursor = self.cursor + 1 self.show() def previous(self): """ Decreases the cursor by one if possible. """ if self.cursor > 0: self.cursor = self.cursor - 1 self.show()
class SendGCode(LabelFrame): def __init__(self, root, prtr, settings, log, *arg): LabelFrame.__init__(self, root, *arg, text="Send gcode") self.app = root self.printer = prtr self.settings = settings self.log = log self.entry = Entry(self, width=50) self.entry.grid(row=1, column=1, columnspan=3, sticky=N+E+W) self.bSend = Button(self, text="Send", width=4, command=self.doSend, state=DISABLED) self.bSend.grid(row=1, column=4, padx=2) self.entry.delete(0, END) self.entry.bind('<Return>', self.hitEnter) self.gcv = StringVar(self) gclist = gcoderef.gcKeys() self.gcv.set(gclist[0]) l = Label(self, text="G Code Reference:", justify=LEFT) l.grid(row=2, column=1, columnspan=2, sticky=W) self.gcm = Combobox(self, textvariable=self.gcv) self.gcm['values'] = gclist self.gcm.grid(row=2, column=3, padx=2) self.gcm.bind('<<ComboboxSelected>>', self.gcodeSel) #self.bInfo = Button(self, text="Info", width=9, command=self.doInfo) #self.bInfo.grid(row=2, column=4, padx=2) #def doInfo(self): def gcodeSel(self, *arg): verb = self.gcv.get() self.log.logMsg("%s: %s" % (verb, gcoderef.gcText(verb))) def activate(self, flag): if flag: self.bSend.config(state=NORMAL) else: self.bSend.config(state=DISABLED) def hitEnter(self, e): self.doSend() def doSend(self): cmd = self.entry.get() verb = cmd.split()[0] if self.app.printerAvailable(cmd=verb): self.log.logMsg("Sending: %s" % cmd) self.printer.send_now(cmd)
class AuthDialog(Popup): message = _('Enter username and password\nfor "%(method)s" at "%(realm)s"') def __init__(self, parent, deferred, method, realm, addnl=None): self.deferred = deferred self.method = method self.realm = realm self._saveOK = False Popup.__init__(self, parent, addnl) def _saveBoolean(self, *value): self._saveOK = not self._saveOK def getResult(self): return (self.uentry.get(), self.pentry.get(), self._saveOK) def body(self): print "auth body" from Tkinter import NW, E, W, Frame, Label, Button, Entry, Checkbutton defargs = { 'padx':5, 'pady':5, 'sticky':W } self.top = Frame(self) self.top.grid(row=1,column=1,sticky=NW) msg = self.message % { 'realm':self.realm, 'method':self.method } self.label = Label(self.top, text=msg, justify='center') self.label.grid(row=1, column=1, columnspan=4, **defargs) self.ulabel = Label(self.top, text=_('User Name')+':', justify='left') self.ulabel.grid(row=2, column=1, columnspan=2, **defargs) self.uentry = Entry(self.top) self.uentry.grid(row=2, column=3, columnspan=2, **defargs) self.uentry.focus_set() self.plabel = Label(self.top, text=_('Password')+':', justify='left') self.plabel.grid(row=3, column=1, columnspan=2, **defargs) self.pentry = Entry(self.top, show="*") self.pentry.grid(row=3, column=3, columnspan=2, **defargs) self._saveOk = False self.saveCheck = Checkbutton(self.top, command=self._saveBoolean) self.saveCheck.grid(row=4, column=1, columnspan=1, **defargs) self.savelabel = Label(self.top, text=_('Save this username and password')) self.savelabel.grid(row=4, column=2, columnspan=3, **defargs) defargs['sticky'] = W self.cancelb = Button(self.top, text=_('Cancel'), command=self.cancel) self.cancelb.grid(row=5, column=3, columnspan=1, **defargs) self.okb = Button(self.top, text=_('OK'), command=self.selected) self.okb.grid(row=5, column=4, columnspan=1, **defargs)
class readInputParams: def __init__(self, master): self.master = master master.title("Enter Filter Criteria:") self.label_CANSLIMParams = Label(master, text="CANSLIM EPS Parameters:") self.label_latestYear = Label(master, text="Latest Year") self.label_prevYear = Label(master, text="Previous Year") self.label_prevprevYear = Label(master, text="2nd Prev Year") self.label_currentQtr = Label(master, text="current Qtr") self.label_QtrEPSAlone = Label(master, text="Quater EPS Growth alone") self.filter_button = Button(master, text="Filter", command=lambda: self.runFilter()) self.entry_EPSY1 = Entry(master) self.entry_EPSY2 = Entry(master) self.entry_EPSY3 = Entry(master) self.entry_EPSCurrQtr = Entry(master) self.entry_EPSQtrAlone = Entry(master) #layout #first row self.label_latestYear.grid(row=1, column=2) self.label_prevYear.grid(row=1, column=3) self.label_prevprevYear.grid(row=1, column=4) self.label_currentQtr.grid(row=1, column=5) #second row self.label_CANSLIMParams.grid(row=2, column=1) self.entry_EPSY1.grid(row=2, column=2) self.entry_EPSY2.grid(row=2, column=3) self.entry_EPSY3.grid(row=2, column=4) self.entry_EPSCurrQtr.grid(row=2, column=5) #third row self.label_QtrEPSAlone.grid(row=3, column=1) self.entry_EPSQtrAlone.grid(row=3, column=2) #fourth row self.filter_button.grid(row=4, column=1) #set default values self.entry_EPSY1.insert(0, 10) self.entry_EPSY2.insert(0, 8) self.entry_EPSY3.insert(0, 0) self.entry_EPSCurrQtr.insert(0, 15) self.entry_EPSQtrAlone.insert(0, 10) def runFilter(self): EPSY1 = self.entry_EPSY1.get() EPSY2 = self.entry_EPSY2.get() EPSY3 = self.entry_EPSY3.get() EPSCurrQtr = self.entry_EPSCurrQtr.get() EPSQtrAlone = self.entry_EPSQtrAlone.get() print("in filter Y1 %s Y2 %s Y3 %s Curren %s QtrAlone %s" %(EPSY1, EPSY2, EPSY3, EPSCurrQtr, EPSQtrAlone)) getCompleteReport(EPSY1, EPSY2, EPSY3, EPSCurrQtr, EPSQtrAlone) print("CompleteReport Done..\n")
class Calculator: def __init__(self, master): self.master = master master.title("Calculator") self.total = 0 self.entered_number = 0 self.total_label_text = IntVar() self.total_label_text.set(self.total) self.total_label = Label(master, textvariable=self.total_label_text) self.label = Label(master, text="Total:") vcmd = master.register(self.validate) # we have to wrap the command self.entry = Entry(master, validate="key", validatecommand=(vcmd, '%P')) self.add_button = Button(master, text="+", command=lambda: self.update("add")) self.subtract_button = Button(master, text="-", command=lambda: self.update("subtract")) self.reset_button = Button(master, text="Reset", command=lambda: self.update("reset")) # LAYOUT self.label.grid(row=0, column=0, sticky=W) self.total_label.grid(row=0, column=1, columnspan=2, sticky=E) self.entry.grid(row=1, column=0, columnspan=3, sticky=W+E) self.add_button.grid(row=2, column=0) self.subtract_button.grid(row=2, column=1) self.reset_button.grid(row=2, column=2, sticky=W+E) def validate(self, new_text): if not new_text: # the field is being cleared self.entered_number = 0 return True try: self.entered_number = int(new_text) return True except ValueError: return False def update(self, method): if method == "add": self.total += self.entered_number elif method == "subtract": self.total -= self.entered_number else: # reset self.total = 0 self.total_label_text.set(self.total) self.entry.delete(0, END)
def makeCmdButton(self, parent, cmd, row): cmdText = Entry(parent, width=self.cmdWidth) cmdText.grid(row=row, column=1, sticky="ew", ipady=2) cmdText.delete(0, END) cmdText.insert(0, cmd["cmd"]) button = Button(parent, text=cmd["button"], command=lambda: self.execute(cmd["button"], cmdText)) button.grid(row=row, column=0, sticky="ew", padx=2, pady=2) if "tooltip" in cmd: ToolTip(button, cmd["tooltip"]) ToolTip(cmdText, cmd["tooltip"])
def make_entry(self, label_text, var): '''Return (entry, label), . entry - gridded labeled Entry for text entry. label - Label widget, returned for testing. ''' label = Label(self.top, text=label_text) label.grid(row=self.row, column=0, sticky="nw") entry = Entry(self.top, textvariable=var, exportselection=0) entry.grid(row=self.row, column=1, sticky="nwe") self.row = self.row + 1 return entry, label
def _initTeam(self): self.teamframe = Frame(self,borderwidth=1, relief=GROOVE) labteamname = Label(self.teamframe, text="Teamname:") labteamname.grid(row=0, sticky=N+S+E+W) txtteamname = Entry(self.teamframe) txtteamname.grid(row=0, column=1, sticky=N+S+E+W) self.vteamname = StringVar() self.vteamname.set("Amazonen") # initialize button = apply(OptionMenu, (self.teamframe, self.vteamname) + tuple(self.races)) button.bind("<FocusOut>", self.changedTeamCallback) button.grid(row=2, column=0, sticky=N+S+E+W) self.teamframe.grid(row=1, column=0, sticky=N+S+E+W)
class Gui: def __init__(self, master, head_title): self.master = master self.head_title = head_title master.title(head_title) # params definition self.n_clusters = 4 self.n_init = 10 self.file_path = 'C:/' self.is_pre_processed = False self.processor = None self.cluster = None # Tkinter gui self.file_path_text = StringVar(value=self.file_path) self.file_path_label = Label(master, text='Data path:') self.file_path_entry = Entry(master, textvariable=self.file_path_text, width=50) self.browse_button = Button(master, text='Browse', command=self.browse) self.n_clusters_text = StringVar(value=self.n_clusters) self.n_clusters_label = Label(master, text='Num of clusters k:') self.n_clusters_entry = Entry(master, textvariable=self.n_clusters_text) self.n_init_text = StringVar(value=self.n_init) self.n_init_label = Label(master, text='Num of runs:') self.n_init_entry = Entry(master, textvariable=self.n_init_text) self.pre_process_button = Button(master, text='Pre-process', command=self.pre_process) self.build_model_button = Button(master, text='Cluster', command=self.build_model) self.scatter_label = Label(self.master) self.horopleth_label = Label(master) # LAYOUT self.file_path_label.grid(row=0, column=0, sticky=W) self.file_path_entry.grid(row=0, column=1, columnspan=2) self.browse_button.grid(row=0, column=2, sticky=E) self.n_clusters_label.grid(row=1, column=0, sticky=W) self.n_clusters_entry.grid(row=1, column=1, columnspan=2, sticky=W+E) self.n_init_label.grid(row=2, column=0, sticky=W) self.n_init_entry.grid(row=2, column=1, columnspan=2, sticky=W+E) self.pre_process_button.grid(row=3, column=1, sticky=W) self.build_model_button.grid(row=4, column=1, sticky=W) self.scatter_label.grid(row=5, column=0, sticky=W) self.horopleth_label.grid(row=5, column=1, sticky=E) def browse(self): # browse method for choosing the data file path = tkFileDialog.askopenfilename() if path is None or path == '': return self.file_path = path self.file_path_text.set(self.file_path) def pre_process(self): # pre process the data to fit into the algorithm if self.processor is not None: # if we already ran this, ask the user if he wants to run it again result = tkMessageBox.askquestion( message="pre-processing has already been made.\nare you sure you want to run it again?'", icon='warning', title=self.head_title) if result != 'yes': return self.processor = None self.is_pre_processed = False try: # verify the file can be pre-processed self.file_path = self.file_path_text.get() processor = PreProcess(self.file_path) if processor.verifications() is False: tkMessageBox.showerror(title=self.head_title, message=processor.error_message) return # process the data processor.pre_process() tkMessageBox.showinfo(title=self.head_title, message='Preprocessing completed successfully') self.processor = processor self.is_pre_processed = True except Exception as err: template = "An exception of type {0} occurred. Arguments:{1}" message = template.format(type(err).__name__, err) print_exc(err, file=stdout) tkMessageBox.showerror(title=self.head_title, message=message) def build_model(self): # build the kmeans model if not self.is_pre_processed: tkMessageBox.showerror(title=self.head_title, message="pre processing is not validated yet") return if self.cluster is not None: # if we already ran the clustering, verify if we really want to run it again result = tkMessageBox.askquestion( message="clustering has already been made.\nare you sure you want to run it again?", icon='warning', title=self.head_title) if result != 'yes': return self.cluster = None try: # create the kmeans model self.n_clusters = self.n_clusters_text.get() self.n_init = self.n_init_text.get() model = BuildCluster(self.n_clusters, self.n_init, self.processor.df) if model.verifications() is False: tkMessageBox.showerror(title=self.head_title, message=model.error_message) return model.build_cluster() self.cluster = model # draw the graphs in the gui self.draw_graphs() tkMessageBox.showinfo(title=self.head_title, message='Clustering Finished successfully!') except Exception as err: template = "An exception of type {0} occurred. Arguments:{1}" message = template.format(type(err).__name__, err) print_exc(err, file=stdout) tkMessageBox.showerror(title=self.head_title, message=message) def draw_graphs(self): # draw scatter graph using matPlotLib and plotly self.draw_scatter() self.draw_horopleth() def draw_scatter(self): # Draw a scatter plot of Generosity vs social support df = self.cluster.df fig_path = 'scatter.png' plt.scatter(x=df['Generosity'], y=df['Social support'], c=df['cluster'], alpha=0.5) plt.xlabel('Generosity') plt.ylabel('Social support') plt.title("Scatter of Generosity vs Social Support, colored by clusters") plt.savefig(fig_path) # convert from png to gif convert_png_to_gif(fig_path) # display in GUI photo = PhotoImage(file=fig_path.replace('png', 'gif')) self.scatter_label.configure(image=photo, width='400px', height='400px') self.scatter_label.image = photo def draw_horopleth(self): # Draw a horopleth of the country clusters df = self.cluster.df py.sign_in('omrikipiki', 'VcDvTak2bEIiyOfiaxMj') data = [dict( type='choropleth', locations=df['country'], z=df['cluster'], text=df['country'], locationmode='country names', colorscale=[[0, "rgb(5, 10, 172)"], [0.35, "rgb(40, 60, 190)"], [0.5, "rgb(70, 100, 245)"], [0.6, "rgb(90, 120, 245)"], [0.7, "rgb(106, 137, 247)"], [1, "rgb(220, 220, 220)"]], autocolorscale=False, reversescale=True, marker=dict( line=dict( color='rgb(180,180,180)', width=0.5 )), colorbar=dict( # autotick=False, title='Cluster Group'), )] layout = dict( title='K-Means Clustering Visualization', geo=dict( showframe=False, showcoastlines=False, projection=dict( type='Mercator' ) ) ) fig = dict(data=data, layout=layout) py.iplot(fig, validate=False, filename='d3-world-map') fig_path = 'choromap.png' py.image.save_as(fig, filename=fig_path) # convert to gif convert_png_to_gif(fig_path) # put in GUI photo = PhotoImage(file=fig_path.replace('png', 'gif')) self.horopleth_label.configure(image=photo, width='600px', height='600px') self.horopleth_label.image = photo
txt_display.delete(0, END) txt_display.insert(0, v) root = Tk() root.title('Tk Calculator') root.resizable(width=False, height=False) frm_display_container = Frame(root) frm_display_container.grid(row=1, column=1) frm_input_container = Frame(root) frm_input_container.grid(row=2, column=1) txt_display = Entry(frm_display_container) txt_display.insert(0, 0) txt_display.grid() input_values = [ [1, 2, 3, '/'], [4, 5, 6, '*'], [7, 8, 9, '-'], ['c', 0, '=', '+'] ] for row_index in range(len(input_values)): row = input_values[row_index] for col_index in range(len(row)): val = row[col_index] Button(frm_input_container, text=val, padx=10,
class App(Frame): def __init__(self, master=None): self.computing = False self.S = None self.progress_queue = Queue.Queue() self.cancel_event = threading.Event() Frame.__init__(self, master) self.grid() self.master.protocol("WM_DELETE_WINDOW", self.close_handler) w = Label(self,text=" ",fg="red") w.grid(row=0,column=0,pady=10,sticky=W) ## Object parameters w = Label(self,text="Tower parameters:",fg="red") w.grid(row=0,column=1,pady=10,sticky=W) w = Label(self,text="Latitude (deg):") w.grid(row=1,column=1,sticky=W) self.lat_ent = Entry(self,width=36) self.lat_ent.grid(row=1,column=2,sticky=W) self.lat_ent.insert(0, "60") w = Label(self,text="Tower height (m):") w.grid(row=2,column=1,sticky=W) self.height_ent = Entry(self,width=36) self.height_ent.grid(row=2,column=2,sticky=W) self.height_ent.insert(0, "50") w = Label(self,text="Tower diameter (m):") w.grid(row=3,column=1,sticky=W) self.diam_ent = Entry(self,width=36) self.diam_ent.grid(row=3,column=2,sticky=W) self.diam_ent.insert(0, "30") ## Simulation parameters w = Label(self,text="Simulation parameters",fg="red") w.grid(row=4,column=1,pady=10,sticky=SW) w = Label(self,text="Time vector (s):") w.grid(row=5,column=1,sticky=W) self.time_ent = Entry(self,width=36) self.time_ent.grid(row=5,column=2) self.time_ent.insert(0, "arange(0,365*24*3600,10*60)") ## Output parameters w = Label(self,text="Output parameters",fg="red") w.grid(row=6,column=1,pady=10,sticky=SW) w = Label(self,text="East-west grid (m):") w.grid(row=7,column=1,sticky=W) self.gridx_ent = Entry(self,width=36) self.gridx_ent.grid(row=7,column=2) self.gridx_ent.insert(0, "linspace(-4*tower_height,4*tower_height,10)") w = Label(self,text="South-north grid (m):") w.grid(row=8,column=1,sticky=W) self.gridy_ent = Entry(self,width=36) self.gridy_ent.grid(row=8,column=2) self.gridy_ent.insert(0, "linspace(-4*tower_height,4*tower_height,10)") self.compute_btn = Button(self, text="Start computation", width=15, command=self.compute_btn_handler) self.compute_btn.grid(row=9,column=1,pady=10,sticky=E) w = Label(self,text=" ",fg="red") w.grid(row=0,column=3,pady=10,sticky=W) self.periodicCall() def close_handler(self): self.cancel_event.set() self.master.quit() def parse_entries(self): self.phi = 0 self.latitude = float(eval(self.lat_ent.get())) tower_height = float(eval(self.height_ent.get())) self.tower_height = tower_height self.tower_diameter = float(eval(self.diam_ent.get())) self.time_vector = eval(self.time_ent.get()) x = eval(self.gridx_ent.get()) y = eval(self.gridy_ent.get()) X,Y = meshgrid(x,y) self.X = X self.Y = Y def compute_btn_handler(self): if self.computing: self.cancel_event.set() self.thread1.join() self.compute_btn.config(text="Start computation") else: self.cancel_event = threading.Event() self.meter = Meter(self, relief='ridge', bd=3, width=250) self.meter.grid(row=9,column=2) self.parse_entries() self.compute_btn.config(text="Stop computation") self.thread1 = threading.Thread(target=self.worker_thread) self.thread1.start() def periodicCall(self): """ Check every 100 ms if there is something new in the queue. """ while self.progress_queue.qsize(): try: msg = self.progress_queue.get(0) if msg == 1.0: self.meter.set(msg,"Completed successfully") else: self.meter.set(msg) except Queue.Empty: pass if self.computing: self.compute_btn.config(text="Stop computation") else: self.compute_btn.config(text="Start computation") if self.S != None: self.plot_shadow_map() self.S = None self.master.after(100, self.periodicCall) def plot_shadow_map(self): ion() contourf(self.X, self.Y, self.S/3600.,levels=[0.1,5,10,15,30,40,50,100,1e6],cmap=cm.get_cmap(name="gist_heat_r")) clim(0,100) colorbar() CS = contour(self.X, self.Y, self.S/3600.,levels=[0.0001,5,10,15,30,40,50,100],antialiased=True,colors='k') clabel(CS, inline=1, fontsize=8) xlabel('Location west-east (m)') ylabel('Location south-north (m)') show() def worker_thread(self): self.S = None self.computing = True S = shadow.tower_shadow_map(self.phi, \ self.latitude*pi/180., \ self.tower_height, \ self.tower_diameter, \ self.time_vector, \ self.X, \ self.Y, \ self.progress_queue, \ self.cancel_event) self.S = S self.computing = False
from Tkinter import Tk, Button, Entry, Label, END from time import strptime, strftime from Tkinter.tkMessagebox import showinfo def compute(): global dateEnt date = dateEnt.get() weekday = strftime('%A', strptime(date, '%b %d %Y')) showinfo(message='{} was a {}'.format(date, weekday)) dateEnt.delete(0, END) root = Tk() label = Label(root, text='Enter date') label.grid(row=0, column=0) dateEnt = Entry(root) dateEnt.grid(row=0, column=1) button = Button(root, text='Enter', command=compute) button.grid(row=1, column=0, columnspan=2) root.mainloop()
class ChemicalImporter: def __init__(self, master, system, database): """The constructor method.""" self.version = system.version self.fonttype = system.fonttype self.sfont = get_superfont(self.fonttype) self.master = master self.frame = Frame(master.frame) self.tframe = Frame(master.tframe) self.bframe = Frame(master.bframe) self.tkfont = tkFont.Font(font=system.fonttype) self.chemicals_list = database.keys() self.chemicals_list.sort() self.name = StringVar() self.formula = StringVar() self.MW = DoubleVar() self.temp = DoubleVar(value=0) self.Dw = DoubleVar(value=0) self.Ref = StringVar(value=0) self.Koc = DoubleVar(value=0) self.Kdoc = DoubleVar(value=0) self.Kf = DoubleVar(value=0) self.N = DoubleVar(value=0) self.importedchemicals = {} for name in self.chemicals_list: self.importedchemicals[name] = ChemicalData(name) self.importedchemicals[name].read_database(database[name]) self.name_width = 10 self.ref_width = 10 for chemical_name in self.chemicals_list: if (self.tkfont.measure(chemical_name) + 10) > self.name_width: self.name_width = self.tkfont.measure(chemical_name) + 10 for temp in self.importedchemicals[chemical_name].temps: if (self.tkfont.measure( self.importedchemicals[chemical_name].Ref[temp]) + 10) > self.name_width: self.name_width = self.tkfont.measure( self.importedchemicals[chemical_name].Ref[temp]) + 10 if self.name_width < 150: self.name_width = 150 if self.ref_width < 150: self.ref_width = 150 self.cancelflag = 0 self.sname = StringVar(self.frame, value='') def make_widgets(self): self.instructions = Label( self.tframe, text='Please select the chemical you would like to add ') self.leftcolumn = Label(self.tframe, text=' ', width=2) self.checkcolumn = Label(self.tframe, text=' ', width=5) self.orinamecolumn = Label( self.tframe, text=' ', width=int(self.name_width * 1.1424219345 / 8) + 1) self.tempcolumn = Label(self.tframe, text=' ', width=15) self.ref1column = Label( self.tframe, text=' ', width=int(self.ref_width * 1.1424219345 / 8 / 2) + 1) self.ref2column = Label( self.tframe, text=' ', width=int(self.ref_width * 1.1424219345 / 8 / 2) + 1) self.rightcolumn = Label(self.tframe, text=' ', width=2) self.search_label = Label(self.tframe, text='Search:') self.search_entry = Entry(self.tframe, textvariable=self.sname) self.namelabel = Label(self.tframe, text='Name') self.templabel = Label(self.tframe, text='Temperature') self.reflabel = Label(self.tframe, text='Reference') self.botleftcolumn = Label(self.frame, text=' ', width=2) self.botcheckcolumn = Label(self.frame, text=' ', width=5) self.botorinamecolumn = Label( self.frame, text=' ', width=int(self.name_width * 1.1424219345 / 8) + 1) self.bottempcolumn = Label(self.frame, text=' ', width=15) self.botref1column = Label( self.frame, text=' ', width=int(self.ref_width * 1.1424219345 / 8 / 2) + 1) self.botref2column = Label( self.frame, text=' ', width=int(self.ref_width * 1.1424219345 / 8 / 2) + 1) self.botrightcolumn = Label(self.frame, text=' ', width=2) self.importbutton = Button(self.bframe, text='Import', command=self.OK, width=20) self.cancelbutton = Button(self.bframe, text='Cancel', command=self.cancel, width=20) self.blank1 = Label(self.tframe, text=' ') self.blank2 = Label(self.frame, text=' ') self.blank3 = Label(self.bframe, text=' ') self.blank4 = Label(self.bframe, text=' ') #show the widgets on the grid (top to bottom and left to right) self.instructions.grid(row=0, columnspan=5, sticky='W', padx=8) self.leftcolumn.grid(row=1, column=0, sticky='WE') self.checkcolumn.grid(row=1, column=1, sticky='WE') self.orinamecolumn.grid(row=1, column=2, sticky='WE') self.tempcolumn.grid(row=1, column=3, sticky='WE') self.ref1column.grid(row=1, column=4, sticky='WE') self.ref2column.grid(row=1, column=5, sticky='WE') self.rightcolumn.grid(row=1, column=6, sticky='WE') self.search_label.grid(row=2, column=1, sticky='E', padx=4) self.search_entry.grid(row=2, column=2, columnspan=4, sticky='WE', padx=4) self.blank1.grid(row=3) self.namelabel.grid(row=4, column=2, sticky='WE') self.templabel.grid(row=4, column=3, sticky='WE') self.reflabel.grid(row=4, column=4, columnspan=2, sticky='WE') self.botleftcolumn.grid(row=1, column=0, sticky='WE') self.botcheckcolumn.grid(row=1, column=1, sticky='WE') self.botorinamecolumn.grid(row=1, column=2, sticky='WE') self.bottempcolumn.grid(row=1, column=3, sticky='WE') self.botref1column.grid(row=1, column=4, sticky='WE') self.botref2column.grid(row=1, column=5, sticky='WE') self.botrightcolumn.grid(row=1, column=6, sticky='WE') self.searchname() self.sname.trace('w', self.searchname) def searchname(self, event=None, *args): row = 2 for name in self.chemicals_list: try: self.importedchemicals[name].remove_selectchemicalwidgets() except: pass if self.sname.get() == '': for name in self.chemicals_list: self.importedchemicals[name].selectchemicalwidgets( self.frame, row=row, master=self.master, namewidth=int(self.name_width * 1.1424219345 / 8) + 1, refwidth=int(self.ref_width * 1.1424219345 / 8) + 1) row = row + 1 else: for name in self.chemicals_list: if name.lower()[:len(self.sname.get())].count( self.sname.get().lower()) >= 1: self.importedchemicals[name].selectchemicalwidgets( self.frame, row=row, master=self.master, namewidth=int(self.name_width * 1.1424219345 / 8) + 1, refwidth=int(self.ref_width * 1.1424219345 / 8) + 1) row = row + 1 else: self.importedchemicals[name].check = IntVar( value=self.importedchemicals[name].check) self.blank2.grid(row=row) row = 2 self.blank3.grid(row=row) row = row + 1 self.importbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.cancelbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.blank4.grid(row=row) self.cancelbutton.bind('<Return>', self.cancel) self.focusbutton = self.cancelbutton def selectchemicaldata(self, name): for othername in self.chemicals_list: if othername <> name: try: self.importedchemicals[othername].check.set(0) except: pass def cancelname(self, event=None): self.sname.set('') self.searchname() def OK(self, event=None): for name in self.chemicals_list: if self.importedchemicals[name].check.get() == 1: self.name.set(name) self.formula.set(self.importedchemicals[name].formula) self.MW.set(self.importedchemicals[name].MW) self.temp.set(self.importedchemicals[name].temp.get()) self.Dw.set(self.importedchemicals[name].Dw[self.temp.get()]) self.Ref.set(self.importedchemicals[name].Ref[self.temp.get()]) self.Koc.set(self.importedchemicals[name].Koc[self.temp.get()]) self.Kdoc.set( self.importedchemicals[name].Kdoc[self.temp.get()]) self.Kf.set(self.importedchemicals[name].Kf[self.temp.get()]) self.N.set(self.importedchemicals[name].N[self.temp.get()]) for name in self.chemicals_list: try: self.importedchemicals[name].remove_selectchemicalwidgets() except: pass self.frame.quit() def cancel(self, event=None): self.cancelflag = 1 self.frame.quit()
def cs_Dblentry(root, r, c, value, entry_conf={}, grid_conf={}): entrydbl = DoubleVar() entrydbl.set(float(value)) entry = Entry(root, textvariable=entrydbl, **entry_conf) entry.grid(row=r, column=c, **grid_conf) return entry
B.place(x=150, y=140) my_app.mainloop() ##activity 2 from Tkinter import Tk, Label, Entry, Button, StringVar from Tkinter import LEFT, RIGHT my_app = Tk(className='Calculator') L1 = Label(my_app, text='first number') L1.grid(row=0, column=0) str1 = StringVar() E1 = Entry(my_app, textvariable=str1) E1.grid(row=0, column=1, columnspan=3) L2 = Label(my_app, text='second number') L2.grid(row=1, column=0) str2 = StringVar() E2 = Entry(my_app, textvariable=str2) E2.grid(row=1, column=1, columnspan=3) L3 = Label(my_app, text='result') L3.grid(row=4, column=0) L4 = Label(my_app, text='0') L4.grid(row=4, column=1) def plus(): a = float(str1.get()) b = float(str2.get()) hasil = a + b
from Tkinter import Tk, Label, Entry, Button, StringVar from tkMessageBox import showinfo my_app = Tk(className='Data Diri') L = Label(my_app, text='Data Diri', font=('Arial', 24)) L.grid(row=0, column=0) L1 = Label(my_app, text='Nama : ') L1.grid(row=1, column=0) str1 = StringVar() E1 = Entry(my_app, textvariable=str1) E1.grid(row=1, column=1) L2 = Label(my_app, text='NIM : ') L2.grid(row=2, column=0) str2 = StringVar() E2 = Entry(my_app, textvariable=str2) E2.grid(row=2, column=1) L3 = Label(my_app, text='Idola Dikalangan sahabat : ') L3.grid(row=3, column=0) str3 = StringVar() E3 = Entry(my_app, textvariable=str3) E3.grid(row=3, column=1) L4 = Label(my_app, text='MOtto : ') L4.grid(row=4, column=0) str4 = StringVar() E4 = Entry(my_app, textvariable=str4) E4.grid(row=4, column=1)
class GUI: def _run(self): self.saveBtn.config(state=DISABLED) self.progressTxt.config(state=NORMAL) self.progressTxt.delete('1.0', END) self.progressTxt.update() self.progressTxt.config(state=DISABLED) inputId = self.txEntry.get() item = map(int, self.dbLbox.curselection()) db = self.dbids[item[0]] self.runBtn.config(state=DISABLED) self.inputId, self.inputName, self.hprobes = main(inputId, db, debug=self.debug, txt=self.progressTxt) self.runBtn.config(state=NORMAL) if self.hprobes is not None: self.saveBtn.config(state=NORMAL) def _quitGUI(self): #rpath = self.progressTxt.get('8.0','end-1c') #if rpath.startswith('Your results'): # tkMessageBox.showinfo("Quit", self.progressTxt.get('8.0','end-1c')) self.master.destroy() def _save(self): hps = filter_probes(self.hprobes, self.spec.get(), self.mingc.get(), self.multiexon.get(), self.mintm.get(), self.maxtm.get(), self.mindimer.get(), self.minfold.get(), self.maxduplex.get()) result_csv = write_probesCSV(self.inputId, self.inputName, hps, self.progressTxt) result_fna = write_probesFNA(self.inputId, self.inputName, hps, self.progressTxt) tkMessageBox.showinfo('Result file', 'Details on ' + str(len(hps)) + \ ' hybridization probe(s) were exported to ' + \ result_csv + "\n\n" + \ 'Sequences of '+ str(len(hps)) + \ ' hybridization probe(s) were exported to ' + \ result_fna) def __init__(self, master, dbnames, dbids, debug, version): self.dbids = dbids self.debug = debug self.master = master master.title('Plish Probe Designer') self.logoImg = PhotoImage(file=get_script_path() + '/img/plishLogo.gif') self.logoLbl = Label(master, image=self.logoImg) self.logoLbl.grid(row=0, columnspan=3) self.logoLbl.img = self.logoImg self.dbLbl = Label(master, text='Database') self.dbLbl.grid(row=1, sticky=W + N) self.dbLbox = Listbox(master, width=63, height=4) self.dbLbox.configure(exportselection=False) for i in range(len(dbnames)): self.dbLbox.insert(i, dbnames[i]) self.dbLbox.select_set(0) self.dbLbox.grid(row=1, column=1, columnspan=2, sticky=N) self.txLbl = Label(master, text='Transcript ID') self.txLbl.grid(row=2, sticky=W + N) self.txEntry = Entry(master, width=39) self.txEntry.grid(row=2, column=1, sticky=W + N) self.runBtn = Button(master, text='Run', command=self._run, width=15) self.runBtn.grid(row=2, column=2) self.progressLbl = Label(master, text='Progress') self.progressLbl.grid(row=4, sticky=W + N) self.progressTxt = Text(bg="#263238", fg="#ffffff", state=DISABLED, width=51, height=16) self.progressTxt.grid(row=4, column=1) self.saveBtn = Button(master, text='Save', command=self._save, state=DISABLED, width=15) self.saveBtn.grid(row=5, column=2, sticky=N) self.quitBtn = Button(master, text='Quit', command=self._quitGUI, width=15) self.quitBtn.grid(row=6, column=2, sticky=N) self.aboutLF = LabelFrame(master, text='About', width=300) self.aboutLF.grid(row=5, column=0, rowspan=2, columnspan=2, sticky=N + W) self.versionLbl = Label(self.aboutLF, text='PLISH Probe Designer, Version ' + version + '\n' + \ '(c) Heller lab, Stanford University School of Medicine\n' + \ ' Daniel C. Ellwanger <*****@*****.**> ', justify=LEFT) self.versionLbl.grid(row=0, column=0, sticky=N) # Filter self.filterLF = LabelFrame(master, text='Filter') self.filterLF.grid(row=4, column=2, rowspan=2, sticky=N + W) self.mingc = DoubleVar() self.mingc.set(_defaultGC) self.mingcLbl = Label(self.filterLF, text='Min. GC') self.mingcLbl.grid(row=0, column=0, sticky=N + W) self.mingcEntry = Entry(self.filterLF, width=5, text=self.mingc) self.mingcEntry.grid(row=0, column=1, sticky=N + W) self.mingcLbl2 = Label(self.filterLF, text='%') self.mingcLbl2.grid(row=0, column=2, sticky=N + W) self.spec = StringVar(master) self.spec.set("isoform") self.specLbl = Label(self.filterLF, text='Specificity') self.specLbl.grid(row=1, column=0, sticky=N + W) self.specOm = OptionMenu(self.filterLF, self.spec, "isoform", "gene", "none") self.specOm.grid(row=1, column=1, sticky=N + W, columnspan=2) self.mintm = DoubleVar() self.mintm.set(_defaultMinTm) self.mintmLbl = Label(self.filterLF, text='Min. Tm') self.mintmLbl.grid(row=2, column=0, sticky=N + W) self.mintmEntry = Entry(self.filterLF, width=5, text=self.mintm) self.mintmEntry.grid(row=2, column=1, sticky=N + W) self.mintmLbl2 = Label(self.filterLF, text=u'\N{DEGREE SIGN}' + 'C') self.mintmLbl2.grid(row=2, column=2, sticky=N + W) self.maxtm = DoubleVar() self.maxtm.set(_defaultMaxTm) self.maxtmLbl = Label(self.filterLF, text='Max. Tm') self.maxtmLbl.grid(row=3, column=0, sticky=N + W) self.maxtmEntry = Entry(self.filterLF, width=5, text=self.maxtm) self.maxtmEntry.grid(row=3, column=1, sticky=N + W) self.maxtmLbl2 = Label(self.filterLF, text=u'\N{DEGREE SIGN}' + 'C') self.maxtmLbl2.grid(row=3, column=2, sticky=N + W) self.minfold = DoubleVar() self.minfold.set(_defaultMinFold) self.minfoldLbl = Label(self.filterLF, text='Min. Fold') self.minfoldLbl.grid(row=4, column=0, sticky=N + W) self.minfoldEntry = Entry(self.filterLF, width=5, text=self.minfold) self.minfoldEntry.grid(row=4, column=1, sticky=N + W) self.minfoldLbl2 = Label(self.filterLF, text='kcal/mol') self.minfoldLbl2.grid(row=4, column=2, sticky=N + W) self.mindimer = DoubleVar() self.mindimer.set(_defaultMinDimer) self.mindimerLbl = Label(self.filterLF, text='Min. Dimer') self.mindimerLbl.grid(row=5, column=0, sticky=N + W) self.mindimerEntry = Entry(self.filterLF, width=5, text=self.mindimer) self.mindimerEntry.grid(row=5, column=1, sticky=N + W) self.mindimerLbl2 = Label(self.filterLF, text='kcal/mol') self.mindimerLbl2.grid(row=5, column=2, sticky=N + W) self.maxduplex = DoubleVar() self.maxduplex.set(_defaultMaxDuplex) self.maxduplexLbl = Label(self.filterLF, text='Max. Duplex') self.maxduplexLbl.grid(row=6, column=0, sticky=N + W) self.maxduplexEntry = Entry(self.filterLF, width=5, text=self.maxduplex) self.maxduplexEntry.grid(row=6, column=1, sticky=N + W) self.maxduplexLbl2 = Label(self.filterLF, text='kcal/mol') self.maxduplexLbl2.grid(row=6, column=2, sticky=N + W) self.multiexon = BooleanVar() self.multiexon.set(_defaultMultiExon) self.multiexonCb = Checkbutton(self.filterLF, text='Multi-exon', variable=self.multiexon, onvalue=True, offvalue=False) self.multiexonCb.grid(row=7, column=0, sticky=N + W)
class SolidDatabaseEditor: """Gets the contaminant properties.""" def __init__(self, master, system, solid, solid_database, 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.solid = solid self.solid_database = solid_database self.torts = ['Millington & Quirk', 'Boudreau', 'None'] self.sorps = [ 'Linear--Kd specified', 'Linear--Kocfoc', 'Freundlich', 'Langmuir' ] self.name = StringVar( value='Solid ' + str(solid_database[-1].number)) #stores the chemical 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.tort = StringVar( value=self.torts[0]) #stores the default tortuosity correction self.sorp = StringVar( value=self.sorps[0]) #stores the default sorption correction self.Ref = StringVar(value='') #stores the density self.editflag = editflag self.cancelflag = 0 if editflag == 1: #Detemine whether the chemical is added or edited self.name.set(solid.name) self.e.set(solid.e) self.rho.set(solid.rho) self.foc.set(solid.foc) self.tort.set(solid.tort) self.sorp.set(solid.sorp) self.Ref.set(solid.Ref) def make_widgets(self): """Make the widgets for the window.""" self.bgcolor = self.frame.cget('bg') self.instructions = Label( self.frame, text= ' Please provide the following properties for the solid/mixture: ' ) self.blankcolumn = Label(self.frame, text=' ', width=1) self.namecolumn = Label(self.frame, text=' ', width=18) self.ecolumn = Label(self.frame, text=' ', width=10) self.rhocolumn = Label(self.frame, text=' ', width=10) self.foccolumn = Label(self.frame, text=' ', width=10) self.tortcolumn = Label(self.frame, text=' ', width=18) self.sorpcolumn = Label(self.frame, text=' ', width=20) self.refcolumn = Label(self.frame, text=' ', width=18) self.endcolumn = Label(self.frame, text=' ', width=2) self.namelabel = Label(self.frame, text='Material') self.elabel = Label(self.frame, text='Porosity') self.rholabel = Label(self.frame, text='Bulk density') self.foclabel = Label(self.frame, text='Organic carbon fraction') self.tortlabel = Label(self.frame, text='Tortruosity correction') self.sorplabel = Label(self.frame, text='Sorption isotherms') self.reflabel = Label(self.frame, text='Reference') self.rhounitlabel = Label(self.frame, text=u'g/cm\u00B3') self.namewidget = Entry(self.frame, width=16, justify='center', textvariable=self.name) self.ewidget = Entry(self.frame, width=8, justify='center', textvariable=self.e) self.rhowidget = Entry(self.frame, width=8, justify='center', textvariable=self.rho) self.focwidget = Entry(self.frame, width=8, justify='center', textvariable=self.foc) self.tortwidget = OptionMenu(self.frame, self.tort, *self.torts) self.sorpwidget = OptionMenu(self.frame, self.sorp, *self.sorps) self.refwidget = Entry(self.frame, width=15, justify='center', textvariable=self.Ref) self.okbutton = Button(self.frame, text='OK', width=20, command=self.OK) self.cancelbutton = Button(self.frame, text='Cancel', width=20, command=self.Cancel) self.blank1 = Label(self.frame, text=' ') self.blank2 = Label(self.frame, text=' ') #show the widgets on the grid self.instructions.grid(row=0, column=0, columnspan=7, padx=8, sticky='W') self.blankcolumn.grid(row=1, column=0, sticky='WE', padx=1, pady=1) self.namecolumn.grid(row=1, column=1, sticky='WE', padx=1, pady=1) self.ecolumn.grid(row=1, column=2, sticky='WE', padx=1, pady=1) self.rhocolumn.grid(row=1, column=3, sticky='WE', padx=1, pady=1) self.foccolumn.grid(row=1, column=4, sticky='WE', padx=1, pady=1) self.tortcolumn.grid(row=1, column=5, sticky='WE', padx=1, pady=1) self.sorpcolumn.grid(row=1, column=6, sticky='WE', padx=1, pady=1) self.refcolumn.grid(row=1, column=7, sticky='WE', padx=1, pady=1) self.endcolumn.grid(row=1, column=8, sticky='WE', padx=1, pady=1) self.namelabel.grid(row=2, column=1, sticky='WE', padx=1, pady=1) self.elabel.grid(row=2, column=2, sticky='WE', padx=1, pady=1) self.rholabel.grid(row=2, column=3, sticky='WE', padx=1, pady=1) self.foclabel.grid(row=2, column=4, sticky='WE', padx=1, pady=1) self.tortlabel.grid(row=2, column=5, sticky='WE', padx=1, pady=1) self.sorplabel.grid(row=2, column=6, sticky='WE', padx=1, pady=1) self.reflabel.grid(row=2, column=7, sticky='WE', padx=1, pady=1) self.rhounitlabel.grid(row=3, column=3, sticky='WE', padx=1, pady=1) self.namewidget.grid(row=4, column=1, padx=1, pady=1) self.ewidget.grid(row=4, column=2, padx=1, pady=1) self.rhowidget.grid(row=4, column=3, padx=1, pady=1) self.focwidget.grid(row=4, column=4, padx=1, pady=1) self.tortwidget.grid(row=4, column=5, padx=1, pady=1, sticky='WE') self.sorpwidget.grid(row=4, column=6, padx=1, pady=1, sticky='WE') self.refwidget.grid(row=4, column=7, padx=1, pady=1) self.blank1.grid(row=5) self.okbutton.grid(row=6, columnspan=11) self.cancelbutton.grid(row=7, columnspan=11) self.blank2.grid(row=8) self.okbutton.bind('<Return>', self.OK) self.focusbutton = self.okbutton def OK(self, event=None): """Finish and move on. Checks that the number chemicals are less than the total number of chemicals in database.""" if self.editflag == 0: check = [(solid.name == self.name.get()) for solid in self.solid_database[0:-1]] if self.editflag == 1: check = [(solid.name == self.name.get() and self.solid.name != self.name.get()) for solid in self.solid_database[0:-1]] if self.master.window.top is not None: self.master.open_toplevel() elif self.e.get() > 1 or self.e.get() < 0: tkmb.showinfo( self.version, 'The porosity of a solid can not be larger than 1 or smaller than 0' ) self.e.set(0.5) elif self.rho.get() < 0: tkmb.showinfo(self.version, 'The bulk density of a solid can not be negative') self.e.set(1.0) elif self.foc.get() > 1 or self.foc.get() < 0: tkmb.showinfo( self.version, 'The organic carbon fraction of a solid can not be larger than 1 or smaller than 0' ) self.e.set(1.0) elif sum(check) >= 1 or self.name.get() == '': self.solids_error() else: self.master.tk.quit() def solids_error(self): tkmb.showerror( title=self.version, message= 'This solid material has already been added to the database!') self.focusbutton = self.okbutton self.master.tk.lift() def Cancel(self): try: self.name.set(self.solid.name) self.e.set(self.solid.e) self.rho.set(self.solid.rho) self.foc.set(self.solid.foc) self.tort.set(self.solid.tort) self.sorp.set(self.solid.sorp) self.Ref.set(self.solid.Ref) except: self.cancelflag = 1 if self.master.window.top is not None: self.master.open_toplevel() else: self.master.tk.quit()
class SolidDatabaseImporter: def __init__(self, master, system, database_imported): """The constructor method.""" self.version = system.version self.fonttype = system.fonttype self.sfont = get_superfont(self.fonttype) self.master = master self.tframe = Frame(master.tframe) self.frame = Frame(master.frame) self.bframe = Frame(master.bframe) self.tkfont = tkFont.Font(font=system.fonttype) solids_list = database_imported.keys() solids_list.sort() self.solids_list = solids_list self.name_width = 10 for chemical_name in self.solids_list: if (self.tkfont.measure(chemical_name) + 10) > self.name_width: self.name_width = self.tkfont.measure(chemical_name) + 10 if self.name_width < 150: self.name_width = 150 self.solids = [] for solidname in self.solids_list: self.solids.append(Solid(solids_list.index(solidname))) self.solids[-1].read_database(database_imported[solidname]) self.sname = StringVar(self.frame, value='') self.cancelflag = 0 def make_widgets(self): self.instructions = Label( self.tframe, text= 'Please select the chemical you would like to added to the database ' ) self.leftcolumn = Label(self.tframe, text=' ', font='courier 10', width=2) self.checkcolumn = Label(self.tframe, text=' ', font='courier 10', width=5) self.orinamecolumn = Label( self.tframe, text=' ', font='courier 10', width=int(self.name_width * 1.1424219345 / 8) + 1) self.impnamecolumn1 = Label( self.tframe, text=' ', font='courier 10', width=int(self.name_width * 1.1424219345 / 8 / 2) + 1) self.impnamecolumn2 = Label( self.tframe, text=' ', font='courier 10', width=int(self.name_width * 1.1424219345 / 8 / 2) + 1) self.rightcolumn = Label(self.tframe, text=' ', font='courier 10', width=2) self.search_label = Label(self.tframe, text='Search:') self.search_entry = Entry(self.tframe, textvariable=self.sname) self.orinamelabel = Label(self.tframe, text='Original Name') self.impnamelabel = Label(self.tframe, text='Imported Name') self.blank1 = Label(self.tframe, text=' ') self.botleftcolumn = Label(self.frame, text=' ', width=2) self.botcheckcolumn = Label(self.frame, text=' ', width=5) self.botorinamecolumn = Label( self.frame, text=' ', width=int(self.name_width * 1.1424219345 / 8) + 1) self.botimpnamecolumn1 = Label( self.frame, text=' ', width=int(self.name_width * 1.1424219345 / 8 / 2) + 1) self.botimpnamecolumn2 = Label( self.frame, text=' ', width=int(self.name_width * 1.1424219345 / 8 / 2) + 1) self.botrightcolumn = Label(self.frame, text=' ', width=2) self.allbutton = Button(self.bframe, text='Select All', command=self.selectall, width=20) self.unallbutton = Button(self.bframe, text='Unselect All', command=self.unselectall, width=20) self.importbutton = Button(self.bframe, text='Import', command=self.OK, width=20) self.cancelbutton = Button(self.bframe, text='Cancel', command=self.cancel, width=20) self.blank2 = Label(self.bframe, text=' ') self.blank3 = Label(self.bframe, text=' ') self.blank4 = Label(self.frame, text=' ') #show the widgets on the grid (top to bottom and left to right) self.instructions.grid(row=0, columnspan=5, sticky='W', padx=8) self.leftcolumn.grid(row=1, column=0, sticky='WE') self.checkcolumn.grid(row=1, column=1, sticky='WE') self.orinamecolumn.grid(row=1, column=2, sticky='WE') self.impnamecolumn1.grid(row=1, column=3, sticky='WE') self.impnamecolumn2.grid(row=1, column=4, sticky='WE') self.rightcolumn.grid(row=1, column=5, sticky='WE') self.search_label.grid(row=2, column=1, sticky='E', padx=4) self.search_entry.grid(row=2, column=2, columnspan=3, sticky='WE', padx=4) self.blank1.grid(row=3) self.orinamelabel.grid(row=4, column=2, sticky='WE') self.impnamelabel.grid(row=4, column=3, columnspan=2, sticky='WE') self.botleftcolumn.grid(row=1, column=0, sticky='WE') self.botcheckcolumn.grid(row=1, column=1, sticky='WE') self.botorinamecolumn.grid(row=1, column=2, sticky='WE') self.botimpnamecolumn1.grid(row=1, column=3, sticky='WE') self.botimpnamecolumn2.grid(row=1, column=4, sticky='WE') self.botrightcolumn.grid(row=1, column=5, sticky='WE') self.searchname() self.sname.trace('w', self.searchname) def searchname(self, event=None, *args): row = 2 for solid in self.solids: try: solid.remove_importedsolidwidgets() except: pass if self.sname.get() == '': for solid in self.solids: if solid.check == 1: solid.importedsolidwidgets( self.frame, row=row, namewidth=int(self.name_width * 1.1424219345 / 8) + 1) row = row + 1 for solid in self.solids: if solid.check == 0: solid.importedsolidwidgets( self.frame, row=row, namewidth=int(self.name_width * 1.1424219345 / 8) + 1) row = row + 1 else: for solid in self.solids: if solid.name.lower()[:len(self.sname.get())].count( self.sname.get().lower()) >= 1: if solid.check == 1: solid.importedsolidwidgets( self.frame, row=row, namewidth=int(self.name_width * 1.1424219345 / 8) + 1) row = row + 1 for solid in self.solids: if solid.name.lower()[:len(self.sname.get())].count( self.sname.get().lower()) >= 1: if solid.check == 0: solid.importedsolidwidgets( self.frame, row=row, namewidth=int(self.name_width * 1.1424219345 / 8) + 1) row = row + 1 else: solid.check = IntVar(value=solid.check) self.blank4.grid(row=row) row = 2 self.blank2.grid(row=row) row = row + 1 self.allbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.unallbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.importbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.cancelbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.blank3.grid(row=row) self.cancelbutton.bind('<Return>', self.cancel) self.focusbutton = self.cancelbutton def updatename(self, event=None): row = 2 for solid in self.solids: try: solid.remove_importedsolidwidgets() except: pass for solid in self.solids: if solid.check == 1: solid.importedsolidwidgets( self.frame, row=row, namewidth=int(self.name_width * 1.1424219345 / 8) + 1) row = row + 1 for solid in self.solids: if solid.check == 0: solid.importedsolidwidgets( self.frame, row=row, namewidth=int(self.name_width * 1.1424219345 / 8) + 1) row = row + 1 self.blank4.grid(row=row) row = 2 self.blank2.grid(row=row) row = row + 1 self.updatebutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.allbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.unallbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.importbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.cancelbutton.grid(row=row, column=0, columnspan=5, pady=1) row = row + 1 self.blank3.grid(row=row) self.cancelbutton.bind('<Return>', self.cancel) self.focusbutton = self.cancelbutton def selectall(self, event=None): for solid in self.solids: if solid.name.lower()[:len(self.sname.get())].count( self.sname.get().lower()) >= 1: solid.check.set(1) def unselectall(self, event=None): for solid in self.solids: if solid.name.lower()[:len(self.sname.get())].count( self.sname.get().lower()) >= 1: solid.check.set(0) def OK(self, event=None): for solid in self.solids: solid.get_importedsolid() self.frame.quit() def cancel(self, event=None): self.cancelflag = 1 self.frame.quit()
class TkApp: def __init__(self, ncffile, options): try: from Tkinter import Checkbutton, Frame, Label, Scrollbar from Tkinter import Listbox, Button, IntVar, Tk, VERTICAL from Tkinter import EXTENDED, END, N, S, SINGLE, Entry from Tkinter import StringVar, Text, DISABLED, LEFT except Exception: try: from tkinter import Checkbutton, Frame, Label, Scrollbar from tkinter import Listbox, Button, IntVar, Tk, VERTICAL from tkinter import EXTENDED, END, N, S, SINGLE, Entry from tkinter import StringVar, Text, DISABLED, LEFT except Exception: warn('tkinter unavailable') master = self.root = Tk() self.ncffile = ncffile self.options = options self.plotted_variables = set() frame = Frame(master) frame.grid(row=0) codeframe = Frame(master) codeframe.grid(row=1) metaframe = Frame(master) metaframe.grid(row=2) goframe = Frame(frame) goframe.grid(column=3, row=1) var_label = Label(frame, text='Select Variable') var_label.grid(column=0, row=0) var_scrollbar = Scrollbar(frame, orient=VERTICAL) var_scrollbar.grid(column=1, row=1, sticky=N + S) self.var = Listbox(frame, selectmode=EXTENDED, exportselection=0, yscrollcommand=var_scrollbar.set) self.var.grid(column=0, row=1) var_scrollbar.config(command=self.var.yview) what_to_do = Label(frame, text='Execute') what_to_do.grid(column=2, row=0) self.method_list = Listbox(frame, selectmode=SINGLE, exportselection=0) self.method_list.grid(column=2, row=1) self.pre_txt = StringVar() pre_label = Label(codeframe, text='Before any figures, execute code') self.pre_txt.set(_pre_code) pre_label.grid(row=2, sticky='W') self.pre = Entry(codeframe, width=120, textvariable=self.pre_txt) self.pre.grid(row=3, sticky='E') self.before_txt = StringVar() self.before_txt.set(_before_code) before_label = Label( codeframe, text='Before each figure, execute code') before_label.grid(row=4, sticky='W') self.before = Entry(codeframe, width=120, textvariable=self.before_txt) self.before.grid(row=5, sticky='E') self.after_txt = StringVar() self.after_txt.set(_after_code) after_label = Label(codeframe, text='After each figure, execute code') after_label.grid(row=6, sticky='W') self.after = Entry(codeframe, width=120, textvariable=self.after_txt) self.after.grid(row=7, sticky='E') self.post_txt = StringVar() self.post_txt.set(_post_code) post_label = Label(codeframe, text='After all figures, execute code') post_label.grid(row=8, sticky='W') self.post = Entry(codeframe, width=120, textvariable=self.post_txt) self.post.grid(row=9, sticky='E') options_label = Label(goframe, text='Options:') options_label.grid(column=0, row=1, sticky='W') self.logscale = IntVar() self.logscale.set(0) c = Checkbutton(goframe, text="log-scale?", variable=self.logscale) c.grid(column=0, row=2, sticky='W') self.coastlines = IntVar() self.coastlines.set(_coastlines_opt) coastlines = Checkbutton( goframe, text="coastlines?", variable=self.coastlines, justify=LEFT) coastlines.grid(column=0, row=3, sticky='W') self.countries = IntVar() self.countries.set(_countries_opt) countries = Checkbutton( goframe, text="countries?", variable=self.countries, justify=LEFT) countries.grid(column=0, row=4, sticky='W') self.states = IntVar() self.states.set(_states_opt) states = Checkbutton(goframe, text="states?", variable=self.states, justify=LEFT) states.grid(column=0, row=5, sticky='W') self.counties = IntVar() self.counties.set(_counties_opt) counties = Checkbutton(goframe, text="counties?", variable=self.counties, justify=LEFT) counties.grid(column=0, row=6, sticky='W') self.execute_button = Button( goframe, text="Make Figure", command=self.execute) self.execute_button.grid(row=0, column=0, sticky='W') self.methods = ['mapplot', 'presslat', 'presslon', 'time-lat', 'profile', 'timeseries', 'pressx', 'tileplot', 'plot'] method_labels = ['lat-lon', 'press-lat', 'press-lon', 'time-lat', 'Vertical Profile', 'Time Series', 'press-? (2-D)', 'Tile Plot (2-D)', 'Plot (1-D)'] for method in method_labels: self.method_list.insert(END, method) var_keys = [k for k, v in self.ncffile.variables.items() if k not in _coordkeys] var_keys.sort() self.vars = [] for spc in var_keys: self.var.insert(END, spc) self.vars.append(spc) meta_label = Label(metaframe, text='Common Data Language Header:') meta_label.grid(column=0, row=0, sticky='W') meta_scrollbar = Scrollbar(metaframe, orient=VERTICAL) meta_scrollbar.grid(column=1, row=1, sticky=N + S) self.meta = Text(metaframe, height=10, width=118, bg='white', relief='flat', yscrollcommand=meta_scrollbar.set) self.meta.grid(column=0, row=1, sticky='W') from PseudoNetCDF.pncdump import pncdump try: from StringIO import StringIO except ImportError: from io import StringIO pdump = StringIO("") pncdump(self.ncffile, header=True, outfile=pdump, ) pdump.seek(0, 0) self.meta.insert(END, pdump.read()) self.meta.config(state=DISABLED) help = Button(goframe, text='Help', command=self.help) help.grid(column=0, row=7) quit = Button(goframe, text='Quit', command=self.quit) quit.grid(column=0, row=8) master.mainloop() def help(self): print("pl is pylab: details at matplotlib;") def quit(self): self.root.destroy() def _get_var(self, list): items = list.curselection() try: items = map(int, items) except Exception: pass items = [self.vars[i] for i in items] return items def get_var(self): return self._get_var(self.var) def get_methods(self): items = self.method_list.curselection() try: items = map(int, items) except Exception: pass items = [self.methods[i] for i in items] return items def execute(self): os.system('clear') vars = self.get_var() self.plotted_variables = self.plotted_variables.union(vars) methods, = self.get_methods() self.options.logscale = bool(self.logscale.get()) self.options.coastlines = bool(self.coastlines.get()) self.options.countries = bool(self.countries.get()) self.options.states = bool(self.states.get()) self.options.counties = bool(self.counties.get()) self.options.pre_txt = self.pre_txt.get() self.options.before_txt = self.before_txt.get() self.options.after_txt = self.after_txt.get() self.options.post_txt = self.post_txt.get() plotwithopts(self.ncffile, methods, vars, self.options)
def graphUI(self): self.frame0.destroy() self.initUIRoot() frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=False) frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame1.columnconfigure(1, weight=1) # frame1.columnconfigure(9, weight=1) frame1.columnconfigure(10, pad=7) frame1.rowconfigure(5, weight=1) frame1.rowconfigure(5, pad=7) frame2.columnconfigure(8, pad=7, weight=1) frame2.columnconfigure(1, weight=1) frame2.columnconfigure(6, weight=1) frame2.rowconfigure(8, pad=7) lbl = Label(frame1, text="催化剂性质") lbl.grid(row=0, column=0, columnspan=8, rowspan=1, sticky=W, pady=4, padx=5) # K_Mat_Tree = ttk.Treeview(frame1) # K_Mat_Tree['show'] = 'headings' # K_Mat_Tree = self.makeMatrixUI(7, K_Mat_Tree, sourceDate.K_model) # K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=5, sticky=E + W + S + N, pady=4, padx=5) K_Mat_Tree = Text(frame1, height=18) self.makeMatrixUI(K_Mat_Tree, self.catObj) K_Mat_Tree.configure(state='normal') K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=6, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="优化方法:") lbl.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.optMethod) txt.configure(state='readonly') txt.grid(row=0, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="集总数:") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.n) txt.configure(state='readonly') txt.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="精确度:") lbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.tol) txt.configure(state='readonly') txt.grid(row=2, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) cateDetailButton = Button(frame1, text="查看催化剂详情") cateDetailButton.grid(row=3, column=8) # ________________________________________ lbl = Label(frame2, text="待预测条件") lbl.grid(row=0, column=0, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度(K)") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) self.T_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力(KPa)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比") lbl.grid(row=4, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=4, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="停留时间(s)") lbl.grid(row=5, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=5, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=6, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=6, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=7, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=7, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="微分方程步长") lbl.grid(row=8, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.step_input = Entry(frame2) self.step_input.insert(0, 0.1) self.step_input.grid(row=8, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="图表设置") lbl.grid(row=0, column=6, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="条件变量") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.var = ttk.Combobox(frame2, textvariable=StringVar()) if not self.catObj.withTemp: self.var['values'] = (u'压力', u'剂油比', u'停留时间') self.p_input.insert(0, 0) self.T_input.insert(0, self.catObj.t) self.T_input.configure(state='readonly') self.p_input.configure(state='readonly') self.lastVar = u'压力' else: self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state='readonly') self.var['values'] = (u'温度', u'压力', u'剂油比', u'停留时间', u'温度+压力',u'温度+剂油比',u'剂油比+压力') self.lastVar = u'温度' self.var.bind('<<ComboboxSelected>>', self.onSelecetedVar) self.var.current(0) self.var.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.rangeLbl = Label(frame2, text="条件范围") self.rangeLbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="上限") lbl.grid(row=3, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="下限") lbl.grid(row=4, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.rangeMin = Entry(frame2) self.rangeMax = Entry(frame2) self.rangeMin.grid(row=3, column=8, columnspan=1, sticky=W, rowspan=1, pady=4, padx=5) self.rangeMax.grid(row=4, column=8, columnspan=1, sticky=W, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="结果集(英文逗号分割)") lbl.grid(row=5, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.chartResultId = Entry(frame2) self.chartResultId.insert(0, '1,2,3,4,5,6,7,8,9,10,11,12') self.chartResultId.grid(row=5, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="结果名(英文逗号分割\n尽量使用英文)") lbl.grid(row=6, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.chartResultName = Entry(frame2) #TODO,get the default value from lump model self.chartResultName.insert(0, 'HS,HA,HR,DIESEL,GS,GO,GA,DGAS,LO3,LO4,LPGD,COKE') self.chartResultName.grid(row=6, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="点数") lbl.grid(row=7, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.stepNum = Entry(frame2) self.stepNum.grid(row=7, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) cateDetailButton = Button(frame2, text="预测趋势", command=self.doChart) cateDetailButton.grid(row=8, column=6, columnspan=2)
def preUI(self): self.frame0.destroy() self.initUIRoot() frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=False) frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame1.columnconfigure(1, weight=1) # frame1.columnconfigure(9, weight=1) frame1.columnconfigure(10, pad=7) frame1.rowconfigure(5, weight=1) frame1.rowconfigure(5, pad=7) frame2.columnconfigure(8, pad=7, weight=1) frame2.rowconfigure(8, pad=7) lbl = Label(frame1, text="催化剂性质") lbl.grid(row=0, column=0, columnspan=8, rowspan=1, sticky=W, pady=4, padx=5) # K_Mat_Tree = ttk.Treeview(frame1) # K_Mat_Tree['show'] = 'headings' # K_Mat_Tree = self.makeMatrixUI(7, K_Mat_Tree, sourceDate.K_model) # K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=5, sticky=E + W + S + N, pady=4, padx=5) K_Mat_Tree = Text(frame1, height=18) self.makeMatrixUI(K_Mat_Tree, self.catObj) K_Mat_Tree.configure(state='normal') K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=6, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="优化方法:") lbl.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.optMethod) txt.configure(state='readonly') txt.grid(row=0, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="集总数:") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.n) txt.configure(state='readonly') txt.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="精确度:") lbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.tol) txt.configure(state='readonly') txt.grid(row=2, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) cateDetailButton = Button(frame1, text="查看催化剂详情") cateDetailButton.grid(row=3, column=8) # ________________________________________ lbl = Label(frame2, text="待预测条件") lbl.grid(row=0, column=0, sticky=W, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度(K)") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) if not self.catObj.withTemp: self.T_input.insert(0, self.catObj.t) self.T_input.configure(state='readonly') self.T_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力(KPa)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比") lbl.grid(row=4, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=4, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="停留时间(s)") lbl.grid(row=5, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=5, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=6, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=6, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=7, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=7, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="微分方程步长") lbl.grid(row=8, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.step_input = Entry(frame2) self.step_input.insert(0, 0.1) self.step_input.grid(row=8, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) self.preResult_LB = Listbox(frame2) self.preResult_LB.grid(row=1, column=7, columnspan=2, rowspan=6, pady=4, padx=5) cateDetailButton = Button(frame2, text="预测", command=self.doPre) cateDetailButton.grid(row=8, column=7, columnspan=2)
from Tkinter import Tk, Label, Entry, Button, StringVar from tkMessageBox import showinfo my_app = Tk(className = 'Volume Piramid') D = Label(my_app, text ='Volume Piramid',font='Helvetica 20 bold') D.grid(row=0, column=0) D1 = Label(my_app, text ='Piramid adalah bangun 3 dimensi ''\nPiramid memiliki satu sisi alas dan tidak memiliki sisi atas (tutup).''\nTitik puncak dan titik sudut sisi alas dihubungkan oleh rusuk tegak.''\nSemua sisi tegak limas berbentuk segitiga.',font='Helvetica 10') D1.grid(columnspan=4,row=1, column=0) L1 = Label (my_app, text = 'Tinggi : ') L1.grid(row=2, column=0) str1 = StringVar() E1 = Entry(my_app, textvariable=str1) E1.grid(columnspan=3 ,row=2, column=1) L2 = Label (my_app, text = 'Sisi Alas : ') L2.grid(row=3, column=0) str2 = StringVar() E2 = Entry(my_app, textvariable=str2) E2.grid(columnspan=3 ,row=3, column=1) def volume(): t=float(str1.get()) sa=float(str2.get()) V=(sa**2*t)/3 LP.config(text=V) B = Button(my_app, text='Hitung Volume', command= volume)
def setupMoveSection(): global defaultWidth, defaultHeight global buttonWidth, buttonHeight, buttonBGColor, buttonFGColor global stage1Entry, stage2Entry, stage3Entry, stage4Entry global moveAllRelativeButton, moveAllAbsoluteButton global divisions moveLabel = Label(rFrame, text="Move Commands", font=("Times New Roman", 16), wraplength=200, bg="white") moveLabel.place(relx=.5, rely=1.0 / divisions, anchor="c", relwidth=buttonWidth, relheight=buttonHeight) stageEntryFrame = Frame(rFrame, width=buttonWidth, bg="white") stageEntryFrame.place(relx=.5, rely=7.0 / divisions, anchor="c") stage1Label = Label(stageEntryFrame, text="Slide Mouse in", bg="white", fg="black", font=("Times New Roman", 12)) stage1Label.grid(row=0, columnspan=2) stage1Entry = Entry(stageEntryFrame, font=("Times New Roman", 12), width=15) stage1Entry.grid(row=1, column=0) stage1Entry.configure(state=DISABLED) stage1Units = Label(stageEntryFrame, text="mm", anchor=W, bg="white", fg="black", font=("Times New Roman", 12)) stage1Units.grid(row=1, column=1) stage2Label = Label(stageEntryFrame, text="Rotation about Axis", bg="white", fg="black", font=("Times New Roman", 12)) stage2Label.grid(row=2, columnspan=2) stage2Entry = Entry(stageEntryFrame, font=("Times New Roman", 12), width=15) stage2Entry.grid(row=3, column=0) stage2Entry.configure(state=DISABLED) stage2Units = Label(stageEntryFrame, text="degrees", anchor=W, bg="white", fg="black", font=("Times New Roman", 12)) stage2Units.grid(row=3, column=1) stage3Label = Label(stageEntryFrame, text="Rotary Axis Y-point", bg="white", fg="black", font=("Times New Roman", 12)) stage3Label.grid(row=4, columnspan=2) stage3Entry = Entry(stageEntryFrame, font=("Times New Roman", 12), width=15) stage3Entry.grid(row=5, column=0) stage3Entry.configure(state=DISABLED) stage3Units = Label(stageEntryFrame, text="mm", anchor=W, bg="white", fg="black", font=("Times New Roman", 12)) stage3Units.grid(row=5, column=1) stage4Label = Label(stageEntryFrame, text="Rotary Axis X-point", bg="white", fg="black", font=("Times New Roman", 12)) stage4Label.grid(row=6, columnspan=2) stage4Entry = Entry(stageEntryFrame, font=("Times New Roman", 12), width=15) stage4Entry.grid(row=7, column=0) stage4Entry.configure(state=DISABLED) stage4Units = Label(stageEntryFrame, text="mm", anchor=W, bg="white", fg="black", font=("Times New Roman", 12)) stage4Units.grid(row=7, column=1) moveAllRelativeButton = Button(rFrame, text="Move All Stages Relative", bg=buttonBGColor, fg=buttonFGColor, command=moveAllRelative) moveAllRelativeButton.place(relx=.5, rely=13.0 / divisions, relwidth=buttonWidth, relheight=buttonHeight, anchor="c") moveAllRelativeButton.configure(state=DISABLED) moveAllAbsoluteButton = Button(rFrame, text="Move All Stages Absolute", bg=buttonBGColor, fg=buttonFGColor, command=moveAllAbsolute) moveAllAbsoluteButton.place(relx=.5, rely=15.0 / divisions, relwidth=buttonWidth, relheight=buttonHeight, anchor="c") moveAllAbsoluteButton.configure(state=DISABLED) return
def cs_Intentry(root, r, c, value, entry_conf={}, grid_conf={}): entryint = IntVar() entryint.set(int(value)) entry = Entry(root, textvariable=entryint, **entry_conf) entry.grid(row=r, column=c, **grid_conf) return entry
from Tkinter import Tk, Label, Button, Entry, StringVar from tkMessageBox import showinfo my_app=Tk(className='JAJAR GENJANG') j1=Label(my_app, text='JAJAR GENJANG', font=('arial', 15)) j1.grid(row=0, column=0) j2=Label(my_app, text='''Jajar genjang adalah bangun dua dimensi yang dibentuk oleh dua pasang rusuk, \n yang masing-masing sama panjang dan sejajar dengan pasangannya, serta dua pasang sudut yang sama besar dan berhadapan.''') j2.grid(row=1, column=0) L1=Label(my_app, text='alas') L1.grid(row=2, column=0) str1=StringVar() E1=Entry(my_app, textvariable='str1') E1.grid(row=2, column=1, columnspan=3) L2=Label(my_app, text='tinggi') L2.grid(row=3, column=0) str2=StringVar() E2=Entry(my_app, textvariable='str2') E2.grid(row=3, column=1, columnspan=3) def luas(): alas=float(str1.get()) tinggi=float(str2.get()) luas=alas*tinggi HL.config(text=luas) B=Button(my_app, text='Hitung Luas', command=luas) B.grid(row=4, column=0)
def cs_Strentry(root, r, c, value, entry_conf={}, grid_conf={}): entrystr = StringVar() entrystr.set(value) entry = Entry(root, textvariable=entrystr, **entry_conf) entry.grid(row=r, column=c, **grid_conf) return entry
class VideoGUI(): def __init__(self): self.ENTRY_WITDH = 20 self.button_width = 6 self.default_dir = './' self.gui() def emptyIt(self): self.link_contend.set('') return 0 def chooseFile(self): self.fname = tkFileDialog.askopenfilename(title=u"Choose File", initialdir=(os.path.expanduser(self.default_dir))) self.link_contend.set(self.fname) return self.fname def startFFmpeg(self): self.result_link_contend.set('convert done!') input_path = self.link_contend.get() output_type = self.outType.get() output_path = input_path.split('.')[0] + '.' + output_type if output_type == 'wav': cmd = 'ffmpeg -i ' + input_path + ' -y ' + output_path elif output_type == 'mp4': cmd = 'ffmpeg -i ' + input_path + ' ' + output_path else: cmd = 'ffmpeg' os.system(cmd) self.result_link_contend.set(output_path) self.link_contend.set('convert done!') return 0 def gui(self): self.root = Tk() self.root.title('video converter') self.entry_link = Entry(self.root, width=self.ENTRY_WITDH, state='disabled') self.entry_link.grid(row=0, column=0, columnspan=2) self.link_contend = StringVar() self.entry_link.config(textvariable=self.link_contend) self.link_contend.set('plz choose:') self.choose_button = Button(self.root, text='choose', width=self.button_width, command=self.chooseFile) self.choose_button.grid(row=1, column=0, columnspan=1) self.clear_button = Button(self.root, text='empty', width=self.button_width, command=self.emptyIt) self.clear_button.grid(row=1, column=1, columnspan=1) self.outType = StringVar() self.typeChosen = Combobox(self.root, width=self.ENTRY_WITDH, textvariable=self.outType) self.typeChosen['values'] = ('wav', 'mp4', 'flv', 'mp3', 'gif') self.typeChosen.current(3) self.typeChosen.grid(row=2, column=0, columnspan=2) self.startButton = Button(self.root, text='Start Convert', width=self.button_width * 2, command=self.startFFmpeg) self.startButton.grid(row=3, column=0, columnspan=2) self.result_link = Entry(self.root, width=self.ENTRY_WITDH, state='disabled') self.result_link.grid(row=4, column=0, columnspan=2) self.result_link_contend = StringVar() self.result_link.config(textvariable=self.result_link_contend) self.result_link_contend.set('plz hold on:') mainloop()
class GUI: df = pd.DataFrame({}) def __init__(self, master): self.master = master master.title("K-Means Clustering") #Data path self.pathLabel = Label(master, text="Data path:") vcmd = master.register(self.validate) # we have to wrap the command self.pathEntry = Entry(master, validate="key") ##path for data self.browse_button = Button(master, text="Browse", command=lambda: self.browse()) #Num of clusters k self.numOfClusLabel = Label(master, text="Num of clusters k:") vcmd = master.register(self.validate) # we have to wrap the command self.numOfClusEntry = Entry(master, validate="key") #Num of runs self.numOfRunsLabel = Label(master, text="Num of runs:") vcmd = master.register(self.validate) # we have to wrap the command self.numOfRunsEntry = Entry(master, validate="key") #pre process self.prePro_button = Button(master, text="Pre-Process", command=lambda: self.preProc()) #cluster self.cluster_button = Button(master, text="Cluster", command=lambda: self.kMeans()) # LAYOUT self.pathLabel.grid(row=1, column=0) self.pathEntry.grid(row=1, column=1, sticky=W + E) self.browse_button.grid(row=1, column=2) self.numOfClusLabel.grid(row=2, column=0) self.numOfClusEntry.grid(row=2, column=1) self.numOfRunsLabel.grid(row=3, column=0) self.numOfRunsEntry.grid(row=3, column=1) self.prePro_button.grid(row=4, column=1) self.cluster_button.grid(row=5, column=1) def validate(self, new_text): '''if not new_text: # the field is being cleared self.entered_number = 0 return True try: self.entered_number = int(new_text) return True except ValueError: return False''' def browse(self): #get data file and path for saving self.datapath = tkFileDialog.askopenfilename() self.pathEntry.insert(0, self.datapath) #check valid path and file if (not self.datapath): tkMessageBox.showinfo("K Means Clustering", "Please choose data file") return if (not (self.datapath[-5:] == ".xlsx" or self.datapath[-4:] == ".xls")): tkMessageBox.showinfo("K Means Clustering", "Please choose excel file") return self.df = pd.read_excel(self.datapath) if (self.df.empty or 'year' not in self.df.columns or 'country' not in self.df.columns or 'Generosity' not in self.df.columns or 'Social support' not in self.df.columns): tkMessageBox.showerror("K Means Clustering", "Invalid Excel File!") return #pre process def preProc(self): dataCleaner = PreProcess(self.df) self.df = dataCleaner.df #alert user tkMessageBox.showinfo("K Means Clustering", "Preprocessing completed successfully!") pass #clustering def kMeans(self): try: clusNum = int(self.numOfClusEntry.get()) if (clusNum <= 0): tkMessageBox.showerror("K Means Clustering", "Number of clusters must be positive") return runsNum = int(self.numOfRunsEntry.get()) if (runsNum <= 0): tkMessageBox.showerror("K Means Clustering", "Number of runs must be positive") return except Exception: tkMessageBox.showerror("K Means Clustering", "invalid numbers") return cluster = KMean(self.df, clusNum, runsNum, self.datapath) self.df = cluster.df #set scatter plot path = os.path.dirname(os.path.abspath( self.datapath)) + '\\scatterPlt.gif' scatterPlt = PhotoImage(file=path) self.scatterLbl = Label(image=scatterPlt) self.scatterLbl.image = scatterPlt self.scatterLbl.grid(row=6, column=2) #set map plot path = os.path.dirname(os.path.abspath(self.datapath)) + '\\mapPLT.gif' mapPlt = PhotoImage(file=path) self.mapLbl = Label(image=mapPlt) self.mapLbl.image = mapPlt self.mapLbl.grid(row=6, column=1) #alert user tkMessageBox.showinfo("K Means Clustering", "Clustering completed successfully!")
def gui(): from Tkinter import Tk, Label, Entry, Button, Scale, Checkbutton, W, HORIZONTAL, Frame, StringVar, IntVar, DoubleVar, Radiobutton, BooleanVar, E global root root = Tk() root.wm_title("Compute R_complete") line = 0 global insFile, hklFile, nHKL, nParams, nHKLLabel, fracFree, status, nParamsLabel, nCPU, rCompleteLabel, cycles, lsType, cleanup, nFree, nRunsLabel, mergeCheck, compileMap insFile = StringVar() hklFile = StringVar() nHKL = IntVar() nParams = IntVar() nFree = IntVar() fracFree = DoubleVar() fracFree.set(5.0) nCPU = IntVar() nCPU.set(maxCPU) cycles = IntVar() cycles.set(10) lsType = IntVar() lsType.set(1) cleanup = BooleanVar() cleanup.set(True) mergeCheck = BooleanVar() mergeCheck.set(True) compileMap = BooleanVar() compileMap.set(True) Label(root, text='Instruction File:').grid(row=line, column=0, sticky=E) Entry(root, textvariable=insFile).grid(row=line, column=1) Button(root, text='Browse', command=browseINS).grid(row=line, column=2) line += 1 Label(root, text='Reflection File:').grid(row=line, column=0, sticky=E) Entry(root, textvariable=hklFile).grid(row=line, column=1) Button(root, text='Browse', command=browseHKL).grid(row=line, column=2) line += 1 Checkbutton(root, var=mergeCheck, text='Merge Reflections').grid(row=line, column=1, sticky=W) line += 1 Button(root, text='Load', command=load).grid(row=line, columnspan=3) line += 1 Frame(root, height=20).grid(row=line) line += 1 Label(root, text='# of reflections:').grid(row=line, sticky=E) nHKLLabel = Label(root, text='???') nHKLLabel.grid(row=line, column=1, sticky=W) line += 1 Label(root, text='# of atoms:').grid(row=line, sticky=E) nParamsLabel = Label(root, text='???') nParamsLabel.grid(row=line, column=1, sticky=W) line += 1 Frame(root, height=20).grid(row=line) line += 1 Label(root, text='Select Parameters').grid(row=line, column=1) line += 1 Frame(root, height=20).grid(row=line) line += 1 Label(root, text='# of free reflections:').grid(row=line, sticky=E) nFreeEntry = Entry(root, width=5, textvariable=nFree) nFreeEntry.grid(row=line, column=1, sticky=W) nFreeEntry.bind('<Return>', setScale) nRunsLabel = Label(root, text='# runs') nRunsLabel.grid(row=line, column=2) line += 1 Label(root, text='% of free reflections:').grid(row=line, column=0, sticky=E) w = Scale(root, from_=0.1, to=10.0, resolution=0.1, orient=HORIZONTAL, length=200, var=fracFree, command=percentScale) w.grid(row=line, column=1, columnspan=2, sticky=W) line += 1 Label(root, text='stable <-------------------------------> fast').grid( row=line, column=1, columnspan=2, sticky=W) line += 1 Frame(root, height=10).grid(row=line) line += 1 Label(root, text='Refinement cycles:').grid(row=line, column=0, sticky=E) ls = Scale(root, from_=0, to=50, resolution=1, orient=HORIZONTAL, length=200, var=cycles) ls.grid(row=line, column=1, columnspan=2, sticky=W) line += 1 Label(root, text='fast <--------------------> less model bias').grid( row=line, column=1, columnspan=2, sticky=W) line += 1 Frame(root, height=10).grid(row=line) line += 1 Label(root, text='# of CPUs:').grid(row=line, column=0, sticky=E) ww = Scale(root, from_=1, to=maxCPU, orient=HORIZONTAL, length=200, var=nCPU) ww.grid(row=line, column=1, columnspan=2, sticky=W) line += 1 Label(root, text='Refinement Type:').grid(row=line, column=0, sticky=E) Radiobutton(root, text='CGLS', var=lsType, value=1).grid(row=line, column=1, sticky=W) Radiobutton(root, text='L.S.', var=lsType, value=2).grid(row=line, column=2, sticky=W) line += 1 Frame(root, height=10).grid(row=line) line += 1 Label(root, text='Compile map:').grid(row=line, column=0, sticky=E) Checkbutton(root, var=compileMap).grid(row=line, column=1, sticky=W) line += 1 Label(root, text='Cleanup:').grid(row=line, column=0, sticky=E) Checkbutton(root, var=cleanup).grid(row=line, column=1, sticky=W) line += 1 Button(root, text='RUN', command=run, width=25).grid(row=line, columnspan=3) line += 1 Frame(root, height=20).grid(row=line) line += 1 Label(root, text='R_complete:').grid(row=line, column=0, sticky=E) rCompleteLabel = Label(root, text='???') rCompleteLabel.grid(row=line, column=1, sticky=W) line += 1 Frame(root, height=20).grid(row=line) line += 1 Label(root, text='Status:').grid(row=line, column=0, sticky=E) status = Label(root, text='Idle... Please load files.') status.grid(row=line, column=1, columnspan=2, sticky=W) global IDLE IDLE = True root.mainloop()
class Master: def __init__(self, master): self.master = master master.title("HTTP FLOOD") self.IP = None self.message = "Type IP to be attacked:" self.label_text = StringVar() self.label_text.set(self.message) self.label = Label(master, textvariable=self.label_text) vcmd = master.register(self.validate) # we have to wrap the command self.entry = Entry(master, validate="key", validatecommand=(vcmd, '%P')) self.atack_button = Button(master, text="Start Atack", command=self.validate_IP) self.stop_button = Button(master, text="Stop Atack", command=self.reset, state=DISABLED) self.label.grid(row=0, column=0, columnspan=2, sticky=W + E) self.entry.grid(row=1, column=0, columnspan=2, sticky=W + E) self.atack_button.grid(row=2, column=0) self.stop_button.grid(row=2, column=1) def validate(self, new_text): if not new_text: # the field is being cleared self.IP = None return True else: IP = new_text self.IP = IP return True def validate_IP(self): if (is_valid_ipv4(str(self.IP))): self.message = "Valid IP, Contacting Slaves!" self.atack_button.configure(state=DISABLED) self.stop_button.configure(state=NORMAL) else: self.message = "Invalid IP, Try Again" if self.IP is None: self.message = "Type IP to be attacked:" self.label_text.set(self.message) def reset(self): self.entry.delete(0, END) self.IP = None self.message = "Type IP to be attacked:" self.label_text.set(self.message) self.atack_button.configure(state=NORMAL) self.stop_button.configure(state=DISABLED)
class View: def __init__(self, master): self.master = master self.master.title("Naive Bayes Classifier") Label(master, text="").grid(row=0) self.dirPath = Label(master, text="Directory Path:").grid(row=1) self.dirTextBox = Entry(master, width=60) self.dirTextBox.grid(row=1, column=1) self.browseButton = Button(master, text="Browse", command=lambda: self.browse()) self.browseButton.grid(row=1, column=3) self.discBins = Label(master, text="Discretization Bins:").grid(row=2) self.discBinsBox = Entry(master, width=60) self.discBinsBox.grid(row=2, column=1) self.buildButton = Button(master, width=30, text="Build", command=lambda: self.build()) self.buildButton.grid(row=4, column=1) self.classifyButton = Button(master, width=30, text="Classify", command=lambda: self.classify()) self.classifyButton.grid(row=5, column=1) root.mainloop() def browse(self): self.dirPath = tkFileDialog.askdirectory() if self.isRequestedFilesExist(): self.dirTextBox.delete(0, len(self.dirTextBox.get())) self.dirTextBox.insert(0, self.dirPath) else: tkMessageBox.showerror( "Naive Bayes Classifier - Error", "This path - doesn't contain the requested files.") def isRequestedFilesExist(self): expfiles = ["Structure.txt", "train.csv", "test.csv"] for path, subdirs, files in os.walk(self.dirPath): for name in files: if name.startswith("Structure.txt"): expfiles.remove("Structure.txt") elif name.startswith("train.csv"): expfiles.remove("train.csv") elif name.startswith("test.csv"): expfiles.remove("test.csv") if len(expfiles) > 0: self.buildButton.config(state='disabled') return False else: self.buildButton.config(state='normal') return True def isBinsNumberReal(self): try: int(self.binsNum) return True except: return False def build(self): if self.dirTextBox.get() == None or self.dirTextBox.get() == "": tkMessageBox.showerror("Naive Bayes Classifier - Error", "There is no path.") else: self.dirPath = self.dirTextBox.get() self.binsNum = self.discBinsBox.get() if not self.isRequestedFilesExist(): tkMessageBox.showerror( "Naive Bayes Classifier - Error", "This path - doesn't contain the requested files.") elif not self.isBinsNumberReal(): tkMessageBox.showerror("Naive Bayes Classifier - Error", "This bins number is illegal.") elif self.isDataEmpty(): tkMessageBox.showerror("Naive Bayes Classifier - Error", "This is an Empty File of Train.") else: tkMessageBox.showinfo( "Naive Bayes Classifier", "Build is going to start after you click agree. \n" "It may takes a few minutes and the messageBox going to be unable and black untill it's done." ) self.binsNum = int(self.discBinsBox.get()) self.loadTrainSet() def classify(self): if not self.isRequestedFilesExist(): tkMessageBox.showerror( "Naive Bayes Classifier - Error", "This path - doesn't contain the requested files.") else: self.classifier.classify() tkMessageBox.showinfo("Naive Bayes Classifier - Success", "Classified. Check out the output.txt") sys.exit() def loadTrainSet(self): self.classifier = Classifier(self.dirPath, self.binsNum) def isDataEmpty(self): if (os.stat(self.dirPath + "/train.csv").st_size > 3): return False else: return True
class Example(Frame): def __init__(self, parent): self.catFactors = {} Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): if hasattr(self, 'frame0'): self.frame0.destroy() self.initUIRoot() self.initUIFrame() def initUIRoot(self): self.parent.title("集总模型") self.pack(fill=BOTH, expand=1) menubar = Menu(self.parent) self.parent.config(menu=menubar) self.frame0 = Frame(self, relief=RAISED) self.frame0.pack(fill=BOTH, expand=True) fileMenu = Menu(menubar) fileMenu.add_command(label=u"新建催化剂", command=self.onNewCata) fileMenu.add_command(label=u"精确预测", command=self.onNewPre) fileMenu.add_command(label=u"趋势预测", command=self.onNewGraph) fileMenu.add_command(label=u"最优条件预测", command=self.onNewBest) helpMenu = Menu(menubar) helpMenu.add_command(label=u"关于", command=self.onHelp) mainPageMenu = Menu(menubar) mainPageMenu.add_command(label=u"主页", command=self.initUI) menubar.add_cascade(label="主页", menu=mainPageMenu) menubar.add_cascade(label="操作", menu=fileMenu) menubar.add_cascade(label="帮助", menu=helpMenu) def initUIFrame(self): self.frame0.columnconfigure(0, pad=5, weight=1) self.frame0.columnconfigure(1, pad=5, weight=1) self.frame0.columnconfigure(2, pad=5, weight=1) self.frame0.columnconfigure(3, pad=5, weight=1) self.frame0.columnconfigure(4, pad=5, weight=1) self.frame0.columnconfigure(5, pad=5, weight=1) self.frame0.rowconfigure(0, pad=37) self.frame0.rowconfigure(1, pad=7) self.frame0.rowconfigure(2, pad=7, weight=1) titleImg = ImageTk.PhotoImage(file="./imgs/title.png") catImg = ImageTk.PhotoImage(file="./imgs/cat.png") preImg = ImageTk.PhotoImage(file="./imgs/pre.png") chartImg = ImageTk.PhotoImage(file="./imgs/chart.png") bestImg = ImageTk.PhotoImage(file="./imgs/bestPoint.png") rareImg = ImageTk.PhotoImage(file="./imgs/rare.png") lbl = Label(self.frame0, image=titleImg) lbl.grid(row=0, column=1,columnspan=5,sticky=S+W) lbl.image = titleImg lbl = Label(self.frame0, image=rareImg) lbl.grid(row=3, column=1,columnspan=5,sticky=S) lbl.image = rareImg preButton = Button(self.frame0, command=self.onNewPre) preButton.config(image=preImg) preButton.image = preImg preButton.grid(row=1, column=2) cateButton = Button(self.frame0, command=self.onNewCata) cateButton.config(image=catImg) cateButton.image = catImg cateButton.grid(row=1, column=1) chartButton = Button(self.frame0, command=self.onNewGraph) chartButton.config(image=chartImg) chartButton.image = chartImg chartButton.grid(row=1, column=3) chartButton = Button(self.frame0, command=self.onNewBest) chartButton.config(image=bestImg) chartButton.image = bestImg chartButton.grid(row=1, column=4) lbl = Label(self.frame0, text="新建催化剂") lbl.grid(row=2, column=1, sticky=N) lbl = Label(self.frame0, text="精确预测") lbl.grid(row=2, column=2, sticky=N) lbl = Label(self.frame0, text="趋势预测") lbl.grid(row=2, column=3, sticky=N) lbl = Label(self.frame0, text="最优条件预测") lbl.grid(row=2, column=4, sticky=N) def bestUI(self): self.frame0.destroy() self.initUIRoot() frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=False) frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame1.columnconfigure(1, weight=1) # frame1.columnconfigure(9, weight=1) frame1.columnconfigure(10, pad=7) frame1.rowconfigure(5, weight=1) frame1.rowconfigure(5, pad=7) frame2.columnconfigure(11, pad=7, weight=1) frame2.rowconfigure(8, pad=7) lbl = Label(frame1, text="催化剂性质") lbl.grid(row=0, column=0, columnspan=8, rowspan=1, sticky=W, pady=4, padx=5) # K_Mat_Tree = ttk.Treeview(frame1) # K_Mat_Tree['show'] = 'headings' # K_Mat_Tree = self.makeMatrixUI(7, K_Mat_Tree, sourceDate.K_model) # K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=5, sticky=E + W + S + N, pady=4, padx=5) K_Mat_Tree = Text(frame1, height=18) self.makeMatrixUI(K_Mat_Tree, self.catObj) K_Mat_Tree.configure(state='normal') K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=6, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="优化方法:") lbl.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.optMethod) txt.configure(state='readonly') txt.grid(row=0, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="集总数:") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.n) txt.configure(state='readonly') txt.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="精确度:") lbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.tol) txt.configure(state='readonly') txt.grid(row=2, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) cateDetailButton = Button(frame1, text="查看催化剂详情") cateDetailButton.grid(row=3, column=8) # ________________________________________ lbl = Label(frame2, text="待预测条件") lbl.grid(row=0, column=0, sticky=W, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度范围(K 英文逗号分割 )") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) if not self.catObj.withTemp: self.T_input.insert(0, self.catObj.t) self.T_input.configure(state='readonly') self.T_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力范围(KPa 英文逗号分割)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比范围 (英文逗号分割)") lbl.grid(row=4, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=4, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="停留时间范围(英文逗号分割s)") lbl.grid(row=5, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=5, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=6, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=6, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=7, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=7, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="微分方程步长") lbl.grid(row=8, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.step_input = Entry(frame2) self.step_input.insert(0, 0.1) self.step_input.grid(row=8, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="待预测组分编号(,)") lbl.grid(row=9, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.target = Entry(frame2) self.target.insert(0, '5,6,7') self.target.grid(row=9, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="结果组成") lbl.grid(row=0, column=7, columnspan=2, rowspan=1, pady=4, padx=5, sticky=W) self.preResult_LB = Listbox(frame2) self.preResult_LB.grid(row=1, column=7, columnspan=2, rowspan=8, pady=4, padx=5, sticky=W) lbl = Label(frame2, text="最优温度:") lbl.grid(row=0, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestT = Entry(frame2) self.bestT.delete(0, 'end') self.bestT.configure(state='readonly') self.bestT.grid(row=0, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="最优压力:") lbl.grid(row=1, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestP = Entry(frame2) self.bestP.delete(0, 'end') self.bestP.configure(state='readonly') self.bestP.grid(row=1, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="最优剂油比:") lbl.grid(row=2, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestR = Entry(frame2) self.bestR.delete(0, 'end') self.bestR.configure(state='readonly') self.bestR.grid(row=2, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="最优反应时间:") lbl.grid(row=3, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestTime = Entry(frame2) self.bestTime.delete(0, 'end') self.bestTime.configure(state='readonly') self.bestTime.grid(row=3, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="目标结果:") lbl.grid(row=4, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestSum = Entry(frame2) self.bestSum.delete(0, 'end') self.bestSum.configure(state='readonly') self.bestSum.grid(row=4, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) cateDetailButton = Button(frame2, text="预测", command=self.doBest) cateDetailButton.grid(row=9, column=6, columnspan=2) def preUI(self): self.frame0.destroy() self.initUIRoot() frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=False) frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame1.columnconfigure(1, weight=1) # frame1.columnconfigure(9, weight=1) frame1.columnconfigure(10, pad=7) frame1.rowconfigure(5, weight=1) frame1.rowconfigure(5, pad=7) frame2.columnconfigure(8, pad=7, weight=1) frame2.rowconfigure(8, pad=7) lbl = Label(frame1, text="催化剂性质") lbl.grid(row=0, column=0, columnspan=8, rowspan=1, sticky=W, pady=4, padx=5) # K_Mat_Tree = ttk.Treeview(frame1) # K_Mat_Tree['show'] = 'headings' # K_Mat_Tree = self.makeMatrixUI(7, K_Mat_Tree, sourceDate.K_model) # K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=5, sticky=E + W + S + N, pady=4, padx=5) K_Mat_Tree = Text(frame1, height=18) self.makeMatrixUI(K_Mat_Tree, self.catObj) K_Mat_Tree.configure(state='normal') K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=6, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="优化方法:") lbl.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.optMethod) txt.configure(state='readonly') txt.grid(row=0, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="集总数:") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.n) txt.configure(state='readonly') txt.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="精确度:") lbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.tol) txt.configure(state='readonly') txt.grid(row=2, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) cateDetailButton = Button(frame1, text="查看催化剂详情") cateDetailButton.grid(row=3, column=8) # ________________________________________ lbl = Label(frame2, text="待预测条件") lbl.grid(row=0, column=0, sticky=W, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度(K)") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) if not self.catObj.withTemp: self.T_input.insert(0, self.catObj.t) self.T_input.configure(state='readonly') self.T_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力(KPa)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比") lbl.grid(row=4, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=4, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="停留时间(s)") lbl.grid(row=5, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=5, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=6, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=6, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=7, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=7, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="微分方程步长") lbl.grid(row=8, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.step_input = Entry(frame2) self.step_input.insert(0, 0.1) self.step_input.grid(row=8, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) self.preResult_LB = Listbox(frame2) self.preResult_LB.grid(row=1, column=7, columnspan=2, rowspan=6, pady=4, padx=5) cateDetailButton = Button(frame2, text="预测", command=self.doPre) cateDetailButton.grid(row=8, column=7, columnspan=2) def cateUI(self): self.frame0.destroy() self.initUIRoot() frame4 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame4.pack(fill=BOTH) frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=True) frame1.columnconfigure(0, weight=1) # frame1.columnconfigure(9, weight=1) frame1.rowconfigure(0, weight=1) lbl = Label(frame4, text="已输入温度组数") lbl.grid(row=0, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.varCountT = StringVar() self.countT = Message(frame4, textvariable=self.varCountT) self.varCountT.set('0') self.countT.grid(row=0, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) factor_Tree = ttk.Treeview(frame1) factor_Tree['show'] = 'headings' factor_Tree["columns"] = ['t_resid', 't', 'r_oil', 'p', 'Y0', 'Y_results', 'w_aro', 'w_nitro'] # factor_Tree.heading("t", text="温度") factor_Tree.column("t", width=self.winfo_width() / 8) factor_Tree.heading("r_oil", text="剂油比") factor_Tree.column("r_oil", width=self.winfo_width() / 8) factor_Tree.heading("p", text="压力") factor_Tree.column("p", width=self.winfo_width() / 8) factor_Tree.heading("Y0", text="初始组成") factor_Tree.column("Y0", width=self.winfo_width() / 8) factor_Tree.heading("Y_results", text="产物组成") factor_Tree.column("Y_results", width=self.winfo_width() / 8) factor_Tree.heading("w_aro", text="重芳烃含量") factor_Tree.column("w_aro", width=self.winfo_width() / 8) factor_Tree.heading("w_nitro", text="碱氮含量") factor_Tree.column("w_nitro", width=self.winfo_width() / 8) factor_Tree.heading("t_resid", text="停留时间") factor_Tree.column("t_resid", width=self.winfo_width() / 8) factor_Tree.grid(row=0, column=0, pady=4, padx=5) self.factor_Tree = factor_Tree frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame2.columnconfigure(0, weight=1) frame2.columnconfigure(8, weight=1) lbl = Label(frame2, text="停留时间(s)") lbl.grid(row=0, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=0, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度(K)") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) self.T_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力(KPa)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=0, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="产物组成(<1 英文逗号分割):") lbl.grid(row=1, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.Y_results_input = Entry(frame2) self.Y_results_input.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=2, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=3, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=3, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="分子质量(逗号分割)") lbl.grid(row=4, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.Molmasses_input = Entry(frame2) self.Molmasses_input.grid(row=4, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.Molmasses_input.insert('0.8,1.1,1.8,0.2,0.2,0.2,0.11,0.016,0.042,0.056,0.05,0.012') addButton = Button(frame2, command=self.addFactors, text="添加条件") addButton.grid(row=9, column=2, sticky=E) self.newCatButton = Button(frame2, command=self.newCata, text="开始计算", state=DISABLED) self.newCatButton.grid(row=9, column=6, sticky=E) def graphUI(self): self.frame0.destroy() self.initUIRoot() frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=False) frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame1.columnconfigure(1, weight=1) # frame1.columnconfigure(9, weight=1) frame1.columnconfigure(10, pad=7) frame1.rowconfigure(5, weight=1) frame1.rowconfigure(5, pad=7) frame2.columnconfigure(8, pad=7, weight=1) frame2.columnconfigure(1, weight=1) frame2.columnconfigure(6, weight=1) frame2.rowconfigure(8, pad=7) lbl = Label(frame1, text="催化剂性质") lbl.grid(row=0, column=0, columnspan=8, rowspan=1, sticky=W, pady=4, padx=5) # K_Mat_Tree = ttk.Treeview(frame1) # K_Mat_Tree['show'] = 'headings' # K_Mat_Tree = self.makeMatrixUI(7, K_Mat_Tree, sourceDate.K_model) # K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=5, sticky=E + W + S + N, pady=4, padx=5) K_Mat_Tree = Text(frame1, height=18) self.makeMatrixUI(K_Mat_Tree, self.catObj) K_Mat_Tree.configure(state='normal') K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=6, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="优化方法:") lbl.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.optMethod) txt.configure(state='readonly') txt.grid(row=0, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="集总数:") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.n) txt.configure(state='readonly') txt.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="精确度:") lbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.tol) txt.configure(state='readonly') txt.grid(row=2, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) cateDetailButton = Button(frame1, text="查看催化剂详情") cateDetailButton.grid(row=3, column=8) # ________________________________________ lbl = Label(frame2, text="待预测条件") lbl.grid(row=0, column=0, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度(K)") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) self.T_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力(KPa)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比") lbl.grid(row=4, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=4, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="停留时间(s)") lbl.grid(row=5, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=5, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=6, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=6, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=7, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=7, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="微分方程步长") lbl.grid(row=8, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.step_input = Entry(frame2) self.step_input.insert(0, 0.1) self.step_input.grid(row=8, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="图表设置") lbl.grid(row=0, column=6, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="条件变量") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.var = ttk.Combobox(frame2, textvariable=StringVar()) if not self.catObj.withTemp: self.var['values'] = (u'压力', u'剂油比', u'停留时间') self.p_input.insert(0, 0) self.T_input.insert(0, self.catObj.t) self.T_input.configure(state='readonly') self.p_input.configure(state='readonly') self.lastVar = u'压力' else: self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state='readonly') self.var['values'] = (u'温度', u'压力', u'剂油比', u'停留时间', u'温度+压力',u'温度+剂油比',u'剂油比+压力') self.lastVar = u'温度' self.var.bind('<<ComboboxSelected>>', self.onSelecetedVar) self.var.current(0) self.var.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.rangeLbl = Label(frame2, text="条件范围") self.rangeLbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="上限") lbl.grid(row=3, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="下限") lbl.grid(row=4, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.rangeMin = Entry(frame2) self.rangeMax = Entry(frame2) self.rangeMin.grid(row=3, column=8, columnspan=1, sticky=W, rowspan=1, pady=4, padx=5) self.rangeMax.grid(row=4, column=8, columnspan=1, sticky=W, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="结果集(英文逗号分割)") lbl.grid(row=5, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.chartResultId = Entry(frame2) self.chartResultId.insert(0, '1,2,3,4,5,6,7,8,9,10,11,12') self.chartResultId.grid(row=5, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="结果名(英文逗号分割\n尽量使用英文)") lbl.grid(row=6, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.chartResultName = Entry(frame2) #TODO,get the default value from lump model self.chartResultName.insert(0, 'HS,HA,HR,DIESEL,GS,GO,GA,DGAS,LO3,LO4,LPGD,COKE') self.chartResultName.grid(row=6, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="点数") lbl.grid(row=7, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.stepNum = Entry(frame2) self.stepNum.grid(row=7, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) cateDetailButton = Button(frame2, text="预测趋势", command=self.doChart) cateDetailButton.grid(row=8, column=6, columnspan=2) def onSelecetedVar(self, event): varName = self.var.get() if self.lastVar == u'温度': # u'温度',,,u'停留时间' self.T_input.configure(state="normal") elif self.lastVar == u'压力': self.p_input.configure(state="normal") elif self.lastVar == u'剂油比': self.roil_input.configure(state="normal") elif self.lastVar == u'停留时间': self.t_input.configure(state="normal") elif self.lastVar == u'温度+压力': self.T_input.configure(state="normal") self.p_input.configure(state="normal") elif self.lastVar == u'温度+剂油比': self.roil_input.configure(state="normal") self.T_input.configure(state="normal") elif self.lastVar == u'剂油比+压力': self.roil_input.configure(state="normal") self.p_input.configure(state="normal") if varName == u'温度': self.rangeLbl.config(text='条件范围') self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state="readonly") elif varName == u'压力': self.rangeLbl.config(text='条件范围') self.p_input.delete(0, 'end') self.p_input.insert(0, 0) self.p_input.configure(state="readonly") elif varName == u'剂油比': self.rangeLbl.config(text='条件范围') self.roil_input.delete(0, 'end') self.roil_input.insert(0, 0) self.roil_input.configure(state="readonly") elif varName == u'停留时间': self.rangeLbl.config(text='条件范围') self.t_input.delete(0, 'end') self.t_input.insert(0, 0) self.t_input.configure(state="readonly") elif varName == u'温度+压力': self.rangeLbl.config(text='条件范围,格式:温度,压力') self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state="readonly") self.p_input.delete(0, 'end') self.p_input.insert(0, 0) self.p_input.configure(state="readonly") elif varName == u'温度+剂油比': self.rangeLbl.config(text='条件范围,格式:温度,剂油比') self.roil_input.delete(0, 'end') self.roil_input.insert(0, 0) self.roil_input.configure(state="readonly") self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state="readonly") elif varName == u'剂油比+压力': self.rangeLbl.config(text='条件范围,格式:剂油比,压力') self.roil_input.delete(0, 'end') self.roil_input.insert(0, 0) self.roil_input.configure(state="readonly") self.p_input.delete(0, 'end') self.p_input.insert(0, 0) self.p_input.configure(state="readonly") self.lastVar = varName def onNewCata(self): self.catFactors = {} ftypes = [('集总模型', '*.lp')] dlg = tkFileDialog.Open(self, filetypes=ftypes) fl = dlg.show() # print flmakePreResultUI if fl != '': self.lumpObj = self.readFile(fl) print self.lumpObj self.cateUI() def onNewPre(self): ftypes = [('催化剂存档文件', '*.cat')] dlg = tkFileDialog.Open(self, filetypes=ftypes) fl = dlg.show() print fl if fl != '': self.catObj = self.readFile(fl) self.preUI() def onNewBest(self): ftypes = [('催化剂存档文件', '*.cat')] dlg = tkFileDialog.Open(self, filetypes=ftypes) fl = dlg.show() print fl if fl != '': self.catObj = self.readFile(fl) self.bestUI() def onNewGraph(self): ftypes = [('催化剂存档文件', '*.cat')] dlg = tkFileDialog.Open(self, filetypes=ftypes) fl = dlg.show() print fl if fl != '': self.catObj = self.readFile(fl) self.graphUI() def saveCate(self): ftypes = [('催化剂存档文件', '*.cat')] filename = tkFileDialog.asksaveasfilename(title='保存催化剂存档文件', defaultextension='.cat', filetypes=ftypes) return filename def onHelp(self): mbox.showinfo("集总模型软件", "中国石油\n兰州化工研究中心") def doPre(self): catObj = self.catObj t_resid = float(self.t_input.get()) p = float(self.p_input.get()) Y0 = numpy.mat(self.Y0_input.get().split(',')).astype(numpy.float) const_r = 8.3145 w_aro = float(self.ya_input.get()) w_nitro = float(self.yn_input.get()) t = float(self.T_input.get()) r_oil = float(self.roil_input.get()) stepLength = float(self.step_input.get()) n = catObj.n print [t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n] result = newPre(catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, stepLength).tolist()[0] self.makePreResultUI(self.preResult_LB, result) def doBest(self): catObj = self.catObj t_resid = [float(self.t_input.get().split(',')[0]),float(self.t_input.get().split(',')[1])] p = [float(self.p_input.get().split(',')[0]),float(self.p_input.get().split(',')[1])] Y0 = numpy.mat(self.Y0_input.get().split(',')).astype(numpy.float) const_r = 8.3145 w_aro = float(self.ya_input.get()) w_nitro = float(self.yn_input.get()) t = [float(self.T_input.get().split(',')[0]),float(self.T_input.get().split(',')[1])] r_oil = [float(self.roil_input.get().split(',')[0]),float(self.roil_input.get().split(',')[1])] stepLength = float(self.step_input.get()) n = catObj.n target = self.target.get().split(',') print [t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n,target] result = newBest(catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, stepLength,target) self.bestP.configure(state='normal') self.bestT.configure(state='normal') self.bestR.configure(state='normal') self.bestTime.configure(state='normal') self.bestSum.configure(state='normal') self.bestP.insert('end',round(result['bestP'], 4)) self.bestT.insert('end',round(result['bestT'], 4)) self.bestR.insert('end',round(result['bestR'], 4)) self.bestTime.insert('end',round(result['bestTime'], 4)) self.bestSum.insert('end',round(result['sum'], 4)) self.makePreResultUI(self.preResult_LB, result['Y']) def doChart(self): catObj = self.catObj t_resid = float(self.t_input.get()) p = float(self.p_input.get()) Y0 = numpy.mat(self.Y0_input.get().split(',')).astype(numpy.float) const_r = 8.3145 w_aro = float(self.ya_input.get()) w_nitro = float(self.yn_input.get()) t = float(self.T_input.get()) r_oil = float(self.roil_input.get()) stepNum = int(self.stepNum.get()) resultId = self.chartResultId.get() resultName = self.chartResultName.get() stepLength = float(self.step_input.get()) n = catObj.n varName = '' if self.lastVar == u'温度': varName = 't' varMin = float(self.rangeMin.get()) varMax = float(self.rangeMax.get()) elif self.lastVar == u'压力': varName = 'p' varMin = float(self.rangeMin.get()) varMax = float(self.rangeMax.get()) elif self.lastVar == u'剂油比': varName = 'r' varMin = float(self.rangeMin.get()) varMax = float(self.rangeMax.get()) elif self.lastVar == u'停留时间': varName = 'time' varMin = float(self.rangeMin.get()) varMax = float(self.rangeMax.get()) elif self.lastVar == u'温度+压力': varName = 't,p'.split(',') varMin = self.rangeMin.get().split(',') varMax = self.rangeMax.get().split(',') elif self.lastVar == u'温度+剂油比': varName = 't,r'.split(',') varMin = self.rangeMin.get().split(',') varMax = self.rangeMax.get().split(',') elif self.lastVar == u'剂油比+压力': varName = 'r,p'.split(',') varMin = self.rangeMin.get().split(',') varMax = self.rangeMax.get().split(',') chartConfig = {} chartConfig['varName'] = varName chartConfig['stepNum'] = stepNum chartConfig['varMin'] = varMin chartConfig['varMax'] = varMax chartConfig['resultId'] = resultId chartConfig['resultName'] = resultName # t_resid=3 # p=175 # const_r=8.3145 # Y0=mat([0.481,0.472,0.047,0,0,0,0]) # w_aro=0.472 # w_nitro=0 # t=685 # n=7 # r_oil=8.79 # chartConfig={'varName': 'time', 'varMax': 0.001, 'varMin': 15.0, 'resultId': '1,2,3,4,5,6,7', 'stepNum': 100,'resultName':u'Hs,Ha,Hr,柴油,汽油,气体,焦炭'} print chartConfig print [catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, chartConfig] if len(varName)>1: result = new3dChart(catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, chartConfig, stepLength) else: result = new2dChart(catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, chartConfig, stepLength) def addFactors(self): t_resid = float(self.t_input.get()) p = float(self.p_input.get()) Y0_raw = self.Y0_input.get() Y0 = numpy.mat(Y0_raw.split(',')).astype(numpy.float) Y_results_raw = self.Y_results_input.get() Y_results = numpy.mat(Y_results_raw.split(',')).astype(numpy.float) w_aro = float(self.ya_input.get()) w_nitro = float(self.yn_input.get()) t = float(self.T_input.get()) r_oil = float(self.roil_input.get()) self.Molmasses = numpy.mat(self.Molmasses_input.get().split(',')).astype(numpy.float) self.factor_Tree.insert('', END, values=[t_resid, t, r_oil, p, Y0_raw, Y_results_raw, w_aro, w_nitro]) if self.catFactors.has_key(t): self.catFactors[t].append( {'t_resid': t_resid, 't': t, 'r_oil': r_oil, 'p': p, 'Y0': Y0, 'Y_results': Y_results, 'w_aro': w_aro, 'w_nitro': w_nitro}) else: self.catFactors[t] = [ {'t_resid': t_resid, 't': t, 'r_oil': r_oil, 'p': p, 'Y0': Y0, 'Y_results': Y_results, 'w_aro': w_aro, 'w_nitro': w_nitro}] print self.catFactors self.varCountT.set(len(self.catFactors)) self.Molmasses_input.configure(state='readonly') self.newCatButton.configure(state='active') def newCata(self): filename = self.saveCate() print filename if len(self.catFactors) == 1: newCatNoKa(filename, self.lumpObj, 1, 0, 1, self.lumpObj, self.Molmasses, self.catFactors.values()[0], 'L-BFGS-B', 1e-5, self.lumpObj.shape[0]) else: newCatWithKa(filename, self.lumpObj, 1, 0, 1, self.lumpObj, self.Molmasses, self.catFactors, 'L-BFGS-B', 1e-5, self.lumpObj.shape[0]) def makeMatrixUI(self, targetTree, catObj): n = catObj.n if not catObj.withTemp: targetTree.insert('end', '催化剂模型是在同一温度下,只能计算K\n------------------\nK=\n') K = numpy.around(self.makeMatrixByResult(catObj.K_model, catObj.X0_result, catObj.n)['K_result'], 4) self.makeMatrixOutput(n, targetTree, K) targetTree.insert('end', '\n------------------\n重芳烃影响因数:\n') targetTree.insert('end', self.makeMatrixByResult(catObj.K_model, catObj.X0_result, catObj.n)['Ka']) targetTree.insert('end', '\n------------------\n碱氮影响因数:\n') targetTree.insert('end', self.makeMatrixByResult(catObj.K_model, catObj.X0_result, catObj.n)['Kn']) targetTree.insert('end', '\n------------------\n') else: K = self.makeMatrixByResult(catObj.K_model, catObj.X0_result, catObj.n)['K_result'] print catObj.X0_result Ka = numpy.around(self.makeMatrixByResult(catObj.K_model, catObj.Ka, catObj.n)['K_result'], 4) print catObj.Ka Ea = numpy.around(self.makeMatrixByResult(catObj.K_model, catObj.Ea, catObj.n)['K_result'], 4) print catObj.Ea targetTree.insert('end', '\n------------------\nK=\n') print len(K) for i in K: self.makeMatrixOutput(n, targetTree, numpy.round(i, 4)) targetTree.insert('end', '\n------------------\n') targetTree.insert('end', '\n------------------\nKa=\n') self.makeMatrixOutput(n, targetTree, Ka) targetTree.insert('end', '\n------------------\n') targetTree.insert('end', '\n------------------\nEa=\n') self.makeMatrixOutput(n, targetTree, Ea) targetTree.insert('end', '\n------------------\n') def makeMatrixOutput(self, n, targetTree, mat): for i in range(n): targetTree.insert('end', ','.join(mat[i].astype(numpy.string_).tolist())) targetTree.insert('end', '\n') return targetTree def makeMatrixByResult(self, K_model, result, n): if type(result) != type([]): K = result[:-3].tolist() args = result[-3:] K_raw_result = [] for i in K_model.T.flat: if i: K_raw_result.append(K.pop(0)) else: K_raw_result.append(0) K_result = reshape(K_raw_result, (n, n)).T.T.T ka_result, kn_result, cata_result = args return {'K_result': K_result, 'ka_result': ka_result, 'kn_result': kn_result, 'cata_result': cata_result} else: K_results = [] args = result[0][-3:] for i in result: K = i[:-3].tolist() K_raw_result = [] for i in K_model.T.flat: if i: K_raw_result.append(K.pop(0)) else: K_raw_result.append(0) K_result = reshape(K_raw_result, (n, n)).T.T.T K_results.append(K_result) ka_result, kn_result, cata_result = args return {'K_result': K_results, 'ka_result': ka_result, 'kn_result': kn_result, 'cata_result': cata_result} def makePreResultUI(self, target, result): target.delete(0, END) if type(result)!=type([]): result=result.tolist()[0] for i in result: target.insert(END, round(i, 3)) return target def readFile(self, filename): f = open(filename, "r") obj = pickle.load(f) return obj
# set up the ui frame and give it a title root = Tk() root.wm_title("Text Predictor") # set up a label prompting the user to enter text Label(root, text="Enter text:").grid(row=0) # set up as string variable to call the match entry function whenever it is changed enteredText = StringVar() enteredText.set("") enteredText.trace("w", match_entry) # set up the entry box for the user to enter text (using the enteredText string variable) matchThis = Entry(root, textvariable=enteredText, justify=RIGHT) matchThis.grid(row=0, column=1) # set up the result string variable and the label that holds it result = [] for i in range(3): result.append(StringVar()) result[i].set("") label = Label(root, textvariable=result[i]) label.grid(row=1, column=i) label.bind("<Button-1>", lambda e, j=i: insert_text(j)) # the n-gram size options (choice of n-1) this allows you to choose how many words the dict is keyed on sizeOptions = [1, 2, 3, 4, 5] # set up the int variable that holds the size of n-1, and set its default value to the first option in sizeOptions size = IntVar()
class AuthPage(BasePage): def __init__(self, parent, controller): self.is_auth = False self.mutex = Lock() BasePage.__init__(self, parent, controller) def prepare(self): mode = self.mode.get() user = self.userVar.get() pwd = self.pwdVar.get() if mode is 1 and user and pwd: self.confirm(mode, user, pwd) self.userInput.focus_force() def printErr(self, message): self.errLog.config(text=message) def entryToggle(self, toggle, target): if (toggle): for t in target: t.configure(state='normal') else: for t in target: t.configure(state='disabled') def confirm(self, mode, user, pwd): self.mutex.acquire() try: if mode == 1 and not self.is_auth: # mode:1 flash from pvt # TODO: the GUI do not updated due to the correct way to update the UI in tk is to use the after method. self.logger.log('Logging into server...', status_callback=self.printErr) if self.controller.setAuth(user, pwd): self.is_auth = True self.ok.config(state="disabled") self.userInput.config(state="disabled") self.pwdInput.config(state="disabled") self.controller.transition(self) else: self.printErr("Auththentication failed") else: # mode:2, flash from local pass finally: self.mutex.release() def pressReturnKey(self, event=None): if len(self.userVar.get()) > 0 and len(self.pwdVar.get()) > 0: self.confirm(self.mode.get(), self.userVar.get(), self.pwdVar.get()) elif len(self.userVar.get()) == 0: self.logger.log('Please enter username.', status_callback=self.printErr) self.userInput.focus_set() else: self.logger.log('Please enter password.', status_callback=self.printErr) self.pwdInput.focus_set() def setupView(self, title="Test Auth Page", user='', pwd_ori=''): self.mode = IntVar() self.mode.set(1) Label(self, width=25).grid(row=1, column=0, columnspan=2) self.errLog = Label(self, text="") self.errLog.grid(row=4, column=1, columnspan=3, rowspan=3, sticky="NWSE") self.userVar = StringVar() self.pwdVar = StringVar() Label(self, text="Account").grid(row=2, column=1, sticky='E') self.userInput = Entry(self, textvariable=self.userVar, width="30") self.userInput.grid(row=2, column=2, columnspan=2, sticky="W") Label(self, text="Password").grid(row=3, column=1, sticky='E') self.pwdInput = Entry(self, textvariable=self.pwdVar, show="*", width="30") self.pwdInput.grid(row=3, column=2, columnspan=2, sticky="W") self.userVar.set(user) self.pwdVar.set(pwd_ori) Label(self, text=' Welcome to fxos flash tool', font=TITLE_FONT).grid(row=0, column=1, columnspan=3, sticky="WE") Radiobutton(self, state='disabled', text='Download build from pvt', variable=self.mode, value=1, command=lambda: self.entryToggle( True, [self.userInput, self.pwdInput])).grid( row=1, column=2, columnspan=2, sticky="E") Radiobutton(self, state='disabled', text='Flash build from local', variable=self.mode, value=2, command=lambda: self.entryToggle( False, [self.userInput, self.pwdInput])).grid( row=1, column=4, sticky="W") self.ok = Button(self, text='Next', command=lambda: self.confirm(self.mode.get( ), self.userVar.get(), self.pwdVar.get())) self.ok.grid(row=4, column=4, sticky="W") self.userInput.bind('<Return>', self.pressReturnKey) self.pwdInput.bind('<Return>', self.pressReturnKey) self.ok.bind('<Return>', self.pressReturnKey)
font=('arial', 12, 'bold'), text="Question:", bg="#99ccff", fg='blue4', bd=20, anchor='w').grid(row=1, column=0, sticky=E, pady=(0, 0)) #function to show and print question entry = Entry(form, font=('arial', 10, 'bold'), width=120, bd=13, bg="#99ccff", fg="#012b74") entry.fieldname = "Question" entry.grid(row=1, column=1, sticky=E + W) entry.delete(0, END) str3 = generateQuestion() entry.insert(0, (str3)) Label(form, font=('arial', 12, 'bold'), text="Answer write here:", bg="#99ccff", fg="#012b74", bd=10, anchor='w').grid(row=5, column=0, sticky=E, pady=(8, 2)) text1 = Text(form, font=('arial', 12, 'bold'), height=2, fg="#012b74",
class PypeTkPad(object): def __init__(self, master, queue, pypeOutput): self.queue = queue self.pypeOutput = pypeOutput self.master = master self.master.title('PypePad') self.master.geometry("%dx%d%+d%+d" % (700, 500, 0, 0)) self.master.minsize(300, 100) self.output_file_name = None self.BuildMainFrame() self.UpdateOutput() def NewCommand(self): self.ClearAllCommand() def OpenCommand(self): import tkFileDialog from Tkinter import END openfile = tkFileDialog.askopenfile() if not openfile: return for line in openfile.readlines(): self.text_input.insert(END, line) def SaveCommand(self): import tkFileDialog from Tkinter import END saveasfile = tkFileDialog.asksaveasfile() if not saveasfile: return alltext = self.text_input.get("1.0", END) saveasfile.write(alltext) def QuitCommand(self): self.master.quit() def ClearInputCommand(self): from Tkinter import END self.text_input.delete("1.0", END) def ClearOutputCommand(self): from Tkinter import NORMAL, END, DISABLED self.text_output["state"] = NORMAL self.text_output.delete("1.0", END) self.text_output["state"] = DISABLED self.text_output.see(END) self.text_output.update() def ClearAllCommand(self): self.ClearInputCommand() self.ClearOutputCommand() def OutputFileCommand(self): import tkFileDialog outputfilename = tkFileDialog.asksaveasfilename() if sys.platform == 'win32' and len(outputfilename.split()) > 1: outputfilename = '"%s"' % outputfilename self.output_file_name = outputfilename def AboutCommand(self): self.OutputText('\n') self.OutputText( '* PypePad, Copyright (c) Luca Antiga, David Steinman. *\n') self.OutputText('\n') def UpdateOutput(self): if self.pypeOutput: text = self.pypeOutput.pop(0) self.output_stream.write(text) self.master.after(10, self.UpdateOutput) def RunPype(self, arguments): if not arguments: return if self.output_to_file.get() is not 'n' and self.output_file_name: self.output_stream.output_to_file = True self.output_stream.output_file = open(self.output_file_name, self.output_to_file.get()) else: self.output_stream.output_to_file = False self.queue.append(arguments) def GetWordUnderCursor(self): from Tkinter import CURRENT splitindex = self.text_input.index(CURRENT).split('.') line = self.text_input.get(splitindex[0] + ".0", splitindex[0] + ".end") wordstart = line.rfind(' ', 0, int(splitindex[1]) - 1) + 1 wordend = line.find(' ', int(splitindex[1])) if wordend == -1: wordend = len(line) word = line[wordstart:wordend] return word def GetWordIndex(self): startindex = self.text_input.index("insert-1c wordstart") endindex = self.text_input.index("insert-1c wordend") if self.text_input.get(startindex + '-1c') == '-' and self.text_input.get( startindex + '-2c') == '-': startindex = self.text_input.index("insert-1c wordstart -2c") elif self.text_input.get(startindex + '-1c') == '-' and self.text_input.get( startindex + '-2c') == ' ': startindex = self.text_input.index("insert-1c wordstart -1c") self.wordIndex[0] = startindex self.wordIndex[1] = endindex word = self.text_input.get(self.wordIndex[0], self.wordIndex[1]) return word def GetLogicalLine(self, physicallineid): indexes, lines = self.GetLogicalLines() return lines[indexes[physicallineid]] def GetLogicalLineRange(self, physicallinefirstid, physicallinelastid): indexes, lines = self.GetLogicalLines() return lines[indexes[physicallinefirstid]:indexes[physicallinelastid] + 1] def GetAllLogicalLines(self): return self.GetLogicalLines()[1] def GetLogicalLines(self): from Tkinter import END physicallines = self.text_input.get("1.0", END).split('\n') lines = [] indexes = [0] * len(physicallines) lineid = 0 previousline = "" join = 0 for line in physicallines: if line.startswith('#'): if join: indexes[lineid] = indexes[lineid - 1] elif join: if line.endswith('\\'): lines[-1] = lines[-1] + " " + line[:-1] join = 1 else: lines[-1] = lines[-1] + " " + line join = 0 indexes[lineid] = indexes[lineid - 1] else: if line.endswith('\\'): join = 1 lines.append(line[:-1]) else: lines.append(line) join = 0 if lineid > 0: indexes[lineid] = indexes[lineid - 1] + 1 lineid += 1 return indexes, lines def GetLineUnderCursor(self): from Tkinter import INSERT currentlineid = int(self.text_input.index(INSERT).split('.')[0]) - 1 return self.GetLogicalLine(currentlineid) def RunAllCommand(self): lines = self.GetAllLogicalLines() for line in lines: if line and line.strip(): self.RunPype(line) def RunLineCommand(self): line = self.GetLineUnderCursor() if line and line.strip(): self.RunPype(line) def RunSelectionCommand(self): from Tkinter import TclError, SEL_FIRST, SEL_LAST try: firstlineid = int( self.text_input.index(SEL_FIRST).split('.')[0]) - 1 lastlineid = int(self.text_input.index(SEL_LAST).split('.')[0]) - 1 lines = self.GetLogicalLineRange(firstlineid, lastlineid) for line in lines: self.RunPype(line) except TclError: pass def GetSuggestionsList(self, word): list = [] try: exec('import vmtkscripts') except ImportError: return None if word.startswith('--'): list = ['--pipe', '--help'] elif word.startswith('-'): optionlist = [] scriptindex = self.text_input.search('vmtk', self.wordIndex[0], backwards=1) moduleName = self.text_input.get(scriptindex, scriptindex + ' wordend') try: exec('import ' + moduleName) exec('scriptObjectClassName = ' + moduleName + '.' + moduleName) exec('scriptObject = ' + moduleName + '.' + scriptObjectClassName + '()') members = scriptObject.InputMembers + scriptObject.OutputMembers for member in members: optionlist.append('-' + member.OptionName) exec( 'list = [option for option in optionlist if option.count(word)]' ) except: return list else: exec( 'list = [scriptname for scriptname in vmtkscripts.__all__ if scriptname.count(word) ]' ) return list def FillSuggestionsList(self, word): from Tkinter import END self.suggestionslist.delete(0, END) suggestions = self.GetSuggestionsList(word) for suggestion in suggestions: self.suggestionslist.insert(END, suggestion) def ReplaceTextCommand(self, word): self.text_input.delete(self.wordIndex[0], self.wordIndex[1]) self.text_input.insert(self.wordIndex[0], word) self.text_input.focus_set() def ShowHelpCommand(self): word = self.GetWordUnderCursor() self.OutputText(word) if word: self.RunPype(word + ' --help') else: self.OutputText('Enter your vmtk Pype above and Run.\n') def AutoCompleteCommand(self): word = self.GetWordIndex() self.suggestionswindow.withdraw() if word: self.FillSuggestionsList(word) self.suggestionswindow.geometry( "%dx%d%+d%+d" % (400, 150, self.text_output.winfo_rootx(), self.text_output.winfo_rooty())) self.suggestionswindow.deiconify() self.suggestionswindow.lift() def InsertScriptName(self, scriptname): from Tkinter import INSERT self.text_input.insert(INSERT, scriptname + ' ') def InsertFileName(self): from Tkinter import INSERT import tkFileDialog openfilename = tkFileDialog.askopenfilename() if not openfilename: return if len(openfilename.split()) > 1: openfilename = '"%s"' % openfilename self.text_input.insert(INSERT, openfilename + ' ') def KeyPressHandler(self, event): if event.keysym == "Tab": self.AutoCompleteCommand() self.suggestionslist.focus_set() self.suggestionslist.selection_set(0) return "break" else: self.text_input.focus_set() def TopKeyPressHandler(self, event): from Tkinter import ACTIVE, INSERT if event.keysym in ['Down', 'Up']: self.suggestionslist.focus_set() elif event.keysym == "Return": word = self.suggestionslist.get(ACTIVE) self.ReplaceTextCommand(word) self.suggestionswindow.withdraw() self.text_input.focus_set() elif len(event.keysym) == 1: self.suggestionswindow.withdraw() self.text_input.insert(INSERT, event.keysym) self.text_input.focus_set() else: self.suggestionswindow.withdraw() self.text_input.focus_set() def NewHandler(self, event): self.NewCommand() def OpenHandler(self, event): self.OpenCommand() def SaveHandler(self, event): self.SaveCommand() def InsertFileNameHandler(self, event): self.InsertFileName() return "break" def QuitHandler(self, event): self.QuitCommand() def ShowHelpHandler(self, event): self.ShowHelpCommand() def RunKeyboardHandler(self, event): from Tkinter import SEL_FIRST, TclError try: self.text_input.index(SEL_FIRST) self.RunSelectionCommand() except TclError: self.RunLineCommand() return "break" def RunAllHandler(self, event): self.RunAllCommand() def PopupHandler(self, event): try: self.popupmenu.tk_popup(event.x_root, event.y_root, 0) finally: self.popupmenu.grab_release() def OutputText(self, text): from Tkinter import NORMAL, END, DISABLED self.text_output["state"] = NORMAL self.text_output.insert(END, text) self.text_output["state"] = DISABLED def BuildScriptMenu(self, parentmenu, modulename): from Tkinter import Menu menu = Menu(parentmenu, bd=1, activeborderwidth=0) try: exec('import ' + modulename) except ImportError: return None scriptnames = [] exec('scriptnames = [scriptname for scriptname in ' + modulename + '.__all__]') menulength = 20 for i in range(len(scriptnames) / menulength + 1): subscriptnames = scriptnames[i * menulength:(i + 1) * menulength] if not subscriptnames: break submenu = Menu(menu, bd=1, activeborderwidth=0) menu.add_cascade(label=subscriptnames[0] + "...", menu=submenu) for scriptname in subscriptnames: callback = CallbackShim(self.InsertScriptName, scriptname) submenu.add_command(label=scriptname, command=callback) return menu def BuildMainFrame(self): from Tkinter import Menu, IntVar, StringVar, Toplevel, Listbox, Frame, PanedWindow, Text, Scrollbar, Entry from Tkinter import X, N, S, W, E, VERTICAL, TOP, END, DISABLED, RAISED menu = Menu(self.master, activeborderwidth=0, bd=0) self.master.config(menu=menu) filemenu = Menu(menu, tearoff=0, bd=1, activeborderwidth=0) menu.add_cascade(label="File", underline=0, menu=filemenu) filemenu.add_command(label="New", accelerator='Ctrl+N', command=self.NewCommand) filemenu.add_command(label="Open...", accelerator='Ctrl+O', command=self.OpenCommand) filemenu.add_command(label="Save as...", accelerator='Ctrl+S', command=self.SaveCommand) filemenu.add_separator() filemenu.add_command(label="Quit", accelerator='Ctrl+Q', command=self.QuitCommand) self.log_on = IntVar() self.log_on.set(1) self.output_to_file = StringVar() self.output_to_file.set('n') scriptmenu = Menu(menu, tearoff=0, bd=1, activeborderwidth=0) modulenames = ['vmtkscripts'] for modulename in modulenames: scriptsubmenu = self.BuildScriptMenu(menu, modulename) if scriptsubmenu: scriptmenu.add_cascade(label=modulename, menu=scriptsubmenu) editmenu = Menu(menu, tearoff=0, bd=1, activeborderwidth=0) menu.add_cascade(label="Edit", underline=0, menu=editmenu) editmenu.add_cascade(label="Insert script", menu=scriptmenu) editmenu.add_command(label="Insert file name", accelerator='Ctrl+F', command=self.InsertFileName) editmenu.add_separator() editmenu.add_command(label="Clear input", command=self.ClearInputCommand) editmenu.add_command(label="Clear output", command=self.ClearOutputCommand) editmenu.add_command(label="Clear all", command=self.ClearAllCommand) editmenu.add_separator() editmenu.add_checkbutton(label="Log", variable=self.log_on) editmenu.add_separator() editmenu.add_radiobutton(label="No output to file", variable=self.output_to_file, value='n') editmenu.add_radiobutton(label="Write output to file", variable=self.output_to_file, value='w') editmenu.add_radiobutton(label="Append output to file", variable=self.output_to_file, value='a') editmenu.add_command(label="Output file...", command=self.OutputFileCommand) runmenu = Menu(menu, tearoff=0, bd=1, activeborderwidth=0) menu.add_cascade(label="Run", underline=0, menu=runmenu) runmenu.add_command(label="Run all", command=self.RunAllCommand) runmenu.add_command(label="Run current line", command=self.RunLineCommand) runmenu.add_command(label="Run selection", command=self.RunSelectionCommand) helpmenu = Menu(menu, tearoff=0, bd=1, activeborderwidth=0) menu.add_cascade(label="Help", underline=0, menu=helpmenu) helpmenu.add_command(label="Help", underline=0, accelerator='F1', command=self.ShowHelpCommand) helpmenu.add_command(label="About", underline=0, command=self.AboutCommand) self.master.bind("<Control-KeyPress-q>", self.QuitHandler) self.master.bind("<Control-KeyPress-n>", self.NewHandler) self.master.bind("<Control-KeyPress-o>", self.OpenHandler) self.master.bind("<Control-KeyPress-s>", self.SaveHandler) self.master.bind("<Control-KeyPress-f>", self.InsertFileNameHandler) self.master.bind("<KeyPress-F1>", self.ShowHelpHandler) self.master.bind("<KeyPress>", self.KeyPressHandler) self.wordIndex = ['1.0', '1.0'] self.suggestionswindow = Toplevel(bg='#ffffff', bd=0, height=50, width=600, highlightthickness=0, takefocus=True) self.suggestionswindow.overrideredirect(1) self.suggestionslist = Listbox(self.suggestionswindow, bg='#ffffff', bd=1, fg='#336699', activestyle='none', highlightthickness=0, height=9) self.suggestionslist.insert(END, "foo") self.suggestionslist.pack(side=TOP, fill=X) self.suggestionswindow.bind("<KeyPress>", self.TopKeyPressHandler) self.suggestionswindow.withdraw() self.master.rowconfigure(0, weight=1) self.master.columnconfigure(0, weight=1) content = Frame(self.master, bd=0, padx=2, pady=2) content.grid(row=0, column=0, sticky=N + S + W + E) content.rowconfigure(0, weight=1, minsize=50) content.rowconfigure(1, weight=0) content.columnconfigure(0, weight=1) panes = PanedWindow(content, orient=VERTICAL, bd=1, sashwidth=8, sashpad=0, sashrelief=RAISED, showhandle=True) panes.grid(row=0, column=0, sticky=N + S + W + E) frame1 = Frame(panes, bd=0) frame1.grid(row=0, column=0, sticky=N + S + W + E) frame1.columnconfigure(0, weight=1) frame1.columnconfigure(1, weight=0) frame1.rowconfigure(0, weight=1) panes.add(frame1, height=300, minsize=20) frame2 = Frame(panes, bd=0) frame2.grid(row=1, column=0, sticky=N + S + W + E) frame2.columnconfigure(0, weight=1) frame2.columnconfigure(1, weight=0) frame2.rowconfigure(0, weight=1) panes.add(frame2, minsize=20) self.text_input = Text(frame1, bg='#ffffff', bd=1, highlightthickness=0) self.text_input.bind("<KeyPress>", self.KeyPressHandler) self.text_input.bind("<Button-3>", self.PopupHandler) self.text_input.bind("<Control-Return>", self.RunKeyboardHandler) self.input_scrollbar = Scrollbar(frame1, orient=VERTICAL, command=self.text_input.yview) self.text_input["yscrollcommand"] = self.input_scrollbar.set self.text_output = Text(frame2, state=DISABLED, bd=1, bg='#ffffff', highlightthickness=0) self.output_scrollbar = Scrollbar(frame2, orient=VERTICAL, command=self.text_output.yview) self.text_output["yscrollcommand"] = self.output_scrollbar.set self.text_entry = Entry(content, bd=1, bg='#ffffff', state=DISABLED, highlightthickness=0) self.text_input.focus_set() self.text_input.grid(row=0, column=0, sticky=N + S + W + E) self.input_scrollbar.grid(row=0, column=1, sticky=N + S + W + E) self.text_output.grid(row=0, column=0, sticky=N + S + W + E) self.output_scrollbar.grid(row=0, column=1, sticky=N + S + W + E) self.text_entry.grid(row=1, column=0, sticky=N + S + W + E) self.popupmenu = Menu(self.text_input, tearoff=1, bd=0) self.popupmenu.add_command(label="Context help", command=self.ShowHelpCommand) self.popupmenu.add_cascade(label="Insert script", menu=scriptmenu) self.popupmenu.add_command(label="Insert file name...", command=self.InsertFileName) self.popupmenu.add_separator() self.popupmenu.add_command(label="Run all", command=self.RunAllCommand) self.popupmenu.add_command(label="Run current line", command=self.RunLineCommand) self.popupmenu.add_command(label="Run selection", command=self.RunSelectionCommand) self.output_stream = TkPadOutputStream(self.text_output) self.input_stream = TkPadInputStream(self.text_entry, self.output_stream)
Label(root, font=('times', 12, 'bold'), height=2, disabledforeground='black', text=USER_NAME_STR, bg='lightyellow', state=DISABLED, anchor=W).grid(row=6, column=0, rowspan=2, columnspan=1, sticky=W + E + N + S) userNameEntry = Entry(root, bd=4, font=('times', 10)) userNameEntry.grid(row=6, column=1, rowspan=2, columnspan=8, sticky=W + E + N + S) userNameEntry.insert(0, username) Label(root, font=('times', 12, 'bold'), disabledforeground='black', text=PASSWORD_STR, bg='lightyellow', state=DISABLED, anchor=W).grid(row=6, column=9, rowspan=2, columnspan=1, sticky=W + E + N + S) passwordEntry = Entry(root, bd=4, font=('times', 10), show="*")
def startUI(self): self.parent.title("Testing") self.file_list = listdir(getcwd()) fileBox = Listbox(self.parent, selectmode=SINGLE) fileBox.pack() fileBox.grid(column=0, row=1, columnspan=3, rowspan=10, sticky=N + S) textBox = Text(self.parent) textBox.grid(column=4, row=0, columnspan=4, rowspan=10, sticky=N + S + E) ipBox = Entry(self.parent) ipBox.grid(column=0, row=0) btn = Button(text="Open ->", command=lambda: self.readFile(fileBox, textBox)) btn.grid(column=3, row=2) btnFire = Button(text="Fire away!", command=lambda: self.fireTorpedoes(ipBox, textBox)) btnFire.grid(column=3, row=3) scrlBar = Scrollbar(self.parent, command=textBox.yview) scrlBar.grid(column=8, row=0, rowspan=10, sticky=N + S) textBox.config(yscrollcommand=scrlBar.set) for i in self.file_list: fileBox.insert(END, i)