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)
Example #2
0
    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
Example #4
0
            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
Example #5
0
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()
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
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()
Example #10
0
    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
Example #11
0
	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 )
Example #12
0
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' % '非法用户')
Example #13
0
	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
Example #15
0
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()
Example #16
0
    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)
Example #17
0
 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
Example #18
0
	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 )
Example #19
0
File: ui.py Project: mindhog/mawb
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()
Example #21
0
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)
Example #22
0
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()
Example #23
0
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)
Example #24
0
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)
Example #25
0
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")
Example #26
0
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)
Example #27
0
    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
Example #29
0
 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)
Example #30
0
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
Example #31
0
    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,
Example #32
0
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
Example #33
0
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()
Example #34
0
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()
Example #35
0
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
Example #36
0
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
Example #37
0
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)
Example #38
0
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()
Example #41
0
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)
Example #42
0
    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)
Example #43
0
    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)
Example #44
0
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)
Example #45
0
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
Example #46
0
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
Example #47
0
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)
Example #48
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
Example #49
0
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()
Example #50
0
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!")
Example #51
0
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()
Example #52
0
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)
Example #53
0
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
Example #54
0
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
Example #55
0
# 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()
Example #56
0
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)
Example #57
0
      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",
Example #58
0
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)
Example #59
0
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="*")
Example #60
-1
    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)