def Temporary_Immunity(self): self.hide() tIFrame = Toplevel() tIFrame.title("SIR WITH TEMPORARY IMMUNITY") tIFrame.geometry("700x800") # self.top.transient(self) g = Pmw.Blt.Graph(tIFrame) g.pack(expand=1, fill="both") E = zeros([2, 1]) A = zeros([2, 2]) C = zeros([2, 1]) A = zeros([2, 2]) B = zeros([2, 2]) E = zeros([2, 1]) C = zeros([2, 1]) # ------------------------------------------------------------------------------------------------------------------------------------------------------- sus = Pmw.EntryField( tIFrame, labelpos="w", value="0.0", label_text="Initial Susceptibles :", validate={"validator": "real"}, ) sus.pack(expand=1, padx=5, pady=5) Infec = Pmw.EntryField( tIFrame, labelpos="w", value="0.0", label_text="Initial Infectives :", validate={"validator": "real"}, ) Infec.pack(expand=1, padx=5, pady=5) contact = Pmw.EntryField( tIFrame, labelpos="w", value="0.0", label_text="Contact Rate (k) :", validate={"validator": "real"}, ) contact.pack(expand=1, padx=5, pady=5) Removal = Pmw.EntryField( tIFrame, labelpos="w", value="0.0", label_text=" Removal Rate :", validate={"validator": "real"}, ) Removal.pack(expand=1, padx=10, pady=5) time_interval = Pmw.EntryField( tIFrame, labelpos="w", value="0", label_text=" Time Interval :", validate={"validator": "numeric"}, ) time_interval.pack(expand=1, padx=5, pady=5) death_rate = Pmw.EntryField( tIFrame, labelpos="w", value="0.0", label_text=" Death Rate (d) :", validate={"validator": "real"}, ) death_rate.pack(expand=1, padx=10, pady=5) immunity = Pmw.EntryField( tIFrame, labelpos="w", value="0.00", label_text=" Immunity Rate:", validate={"validator": "real"}, ) immunity.pack(expand=1, padx=10, pady=10) # -------------------------------------------------------------------------------------------------------------------------------------------------------- # self.top.transient(self) # self.wButton.config(state='disabled') def retrive(): k1 = contact.get() k = float(k1) ddelta = float(death_rate.get()) aalpha = float(immunity.get()) ggamma = float(Removal.get()) N = int(time_interval.get()) s0 = float(sus.get()) I0 = float(Infec.get()) A[0][0] = 0 A[0][1] = -k A[1][0] = k A[1][1] = 0 B[0][0] = 0 B[0][1] = 0 B[1][0] = 0 B[1][1] = 0 E[0][0] = -(ddelta + aalpha) E[1][0] = -(ggamma + ddelta + +aalpha) C[0][0] = (ddelta + aalpha) * (1 + aalpha / k) C[1][0] = 0 def f1(s1, I1): s_dot = ( s1 * E[0][0] + A[0][0] * (s1 ** 2) + A[0][1] * s1 * I1 + B[0][0] * s1 + B[0][1] * I1 + C[0][0] ) return s_dot def f2(s1, I1): I_dot = ( I1 * E[1][0] + A[1][1] * (I1 ** 2) + A[1][0] * s1 * I1 + B[1][0] * s1 + B[1][1] * I1 + C[1][0] ) return I_dot # =========RATE OF CHANGE OF THE MODEL WITH RESPECT TO TIME AND DECLARATON OF CONSTANTS================================================================ t = arange(0, N, 0.02455) s1 = zeros(len(t)) I1 = zeros(len(t)) s1[0] = s0 I1[0] = I0 h = 0.01 # ==========ITERATION FOR A GIVEN TIME INTERVAL======================================================================================================= for n in range(len(t) - 1): s1[n + 1] = s1[n] + h * (f1(s1[n], I1[n])) I1[n + 1] = I1[n] + h * (f2(s1[n], I1[n])) x_ = tuple(t) y_ = tuple(s1) z_ = tuple(I1) g.configure( title="Susceptible and Infectives against time for SIR with Temporary Immunity" ) g.line_create( "S(t) Vs t", xdata=x_, color="red", ydata=y_, linewidth=2, symbol="" ) g.line_create( "I(t) Vs t", xdata=x_, color="orange", ydata=z_, linewidth=2, symbol="" ) def postscript(): g.postscript_output(fileName="HelloUser1.ps", decorations="no") def newFile(): for name in g.element_names(): g.element_delete(name) contact.setentry("") Removal.setentry("") time_interval.setentry("") Infec.setentry("") sus.setentry("") immunity.setentry("") death_rate.setentry("") # -------------------------------------------------------------------------------------------------------------------------------------------------------- buttons = Pmw.ButtonBox(tIFrame, labelpos="w", label_text="Options") # buttons = Pmw.ButtonBox(self, labelpos='w', label_text='Options') buttons.pack(fill="both", expand=1, padx=10, pady=10) buttons.add("GRID", bg="green", command=g.grid_toggle) buttons.add("PLOT", bg="green", command=retrive) buttons.add("CLEAR", bg="green", command=newFile) buttons.add("SAVE", bg="green", command=postscript) handler = lambda: self.onCloseOtherFrameT(tIFrame) buttons.add("QUIT", bg="red", command=handler)
def __init__(self, parent): # Create the ScrolledCanvas. self.sc = Pmw.ScrolledCanvas( parent, borderframe=1, labelpos='n', label_text='ScrolledCanvas', usehullsize=1, hull_width=400, hull_height=300, ) # Create a group widget to contain the scrollmode options. w = Pmw.Group(parent, tag_text='Scroll mode') w.pack(side='bottom', padx=5, pady=5) hmode = Pmw.OptionMenu( w.interior(), labelpos='w', label_text='Horizontal:', items=['none', 'static', 'dynamic'], command=self.sethscrollmode, menubutton_width=8, ) hmode.pack(side='left', padx=5, pady=5) hmode.invoke('dynamic') vmode = Pmw.OptionMenu( w.interior(), labelpos='w', label_text='Vertical:', items=['none', 'static', 'dynamic'], command=self.setvscrollmode, menubutton_width=8, ) vmode.pack(side='left', padx=5, pady=5) vmode.invoke('dynamic') buttonBox = Pmw.ButtonBox(parent) buttonBox.pack(side='bottom') buttonBox.add('yview', text='Show\nyview', command=self.showYView) buttonBox.add('scroll', text='Page\ndown', command=self.pageDown) buttonBox.add('center', text='Center', command=self.centerPage) # Pack this last so that the buttons do not get shrunk when # the window is resized. self.sc.pack(padx=5, pady=5, fill='both', expand=1) self.sc.component('canvas').bind('<1>', self.addcircle) testEntry = Tkinter.Entry(parent) self.sc.create_line(20, 20, 100, 100) self.sc.create_oval(100, 100, 200, 200, fill='green') self.sc.create_text(100, 20, anchor='nw', text='Click in the canvas\nto draw ovals', font=testEntry.cget('font')) button = Tkinter.Button(self.sc.interior(), text='Hello,\nWorld!\nThis\nis\na\nbutton.') self.sc.create_window(200, 200, anchor='nw', window=button) # Set the scroll region of the canvas to include all the items # just created. self.sc.resizescrollregion() self.colours = ('red', 'green', 'blue', 'yellow', 'cyan', 'magenta', 'black', 'white') self.oval_count = 0 self.rand = 12345
def __init__(self, parent): # Create the toplevel to contain the main menubar. megaToplevel = Pmw.MegaToplevel(parent, title=title) toplevel = megaToplevel.interior() # Create the Balloon for this toplevel. self.balloon = Pmw.Balloon(toplevel) # Create and install the MenuBar. menuBar = Pmw.MainMenuBar(toplevel, balloon=self.balloon) toplevel.configure(menu=menuBar) self.menuBar = menuBar # Add some buttons to the MainMenuBar. menuBar.addmenu('File', 'Close this window or exit') menuBar.addmenuitem('File', 'command', 'Close this window', command=PrintOne('Action: close'), label='Close') menuBar.addmenuitem('File', 'separator') menuBar.addmenuitem('File', 'command', 'Exit the application', command=PrintOne('Action: exit'), label='Exit') menuBar.addmenu('Edit', 'Cut, copy or paste') menuBar.addmenuitem('Edit', 'command', 'Delete the current selection', command=PrintOne('Action: delete'), label='Delete') menuBar.addmenu('Options', 'Set user preferences') menuBar.addmenuitem('Options', 'command', 'Set general preferences', command=PrintOne('Action: general options'), label='General...') # Create a checkbutton menu item. self.toggleVar = Tkinter.IntVar() # Initialise the checkbutton to 1: self.toggleVar.set(1) menuBar.addmenuitem('Options', 'checkbutton', 'Toggle me on/off', label='Toggle', command=self._toggleMe, variable=self.toggleVar) self._toggleMe() menuBar.addcascademenu('Options', 'Size', 'Set some other preferences', traverseSpec='z', tearoff=1) for size in ('tiny', 'small', 'average', 'big', 'huge'): menuBar.addmenuitem('Size', 'command', 'Set size to ' + size, command=PrintOne('Action: size ' + size), label=size) menuBar.addmenu('Help', 'User manuals', name='help') menuBar.addmenuitem('Help', 'command', 'About this application', command=PrintOne('Action: about'), label='About...') # Create and pack the main part of the window. self.mainPart = Tkinter.Label( toplevel, text='This is the\nmain part of\nthe window', background='black', foreground='white', padx=30, pady=30) self.mainPart.pack(fill='both', expand=1) # Create and pack the MessageBar. self.messageBar = Pmw.MessageBar(toplevel, entry_width=40, entry_relief='groove', labelpos='w', label_text='Status:') self.messageBar.pack(fill='x', padx=10, pady=10) self.messageBar.message( 'state', 'Balloon/status help not working properly - Tk menubar bug') buttonBox = Pmw.ButtonBox(toplevel) buttonBox.pack(fill='x') buttonBox.add('Disable\nall', command=menuBar.disableall) buttonBox.add('Enable\nall', command=menuBar.enableall) buttonBox.add('Create\nmenu', command=self.add) buttonBox.add('Delete\nmenu', command=self.delete) buttonBox.add('Create\nitem', command=self.additem) buttonBox.add('Delete\nitem', command=self.deleteitem) # Configure the balloon to displays its status messages in the # message bar. self.balloon.configure(statuscommand=self.messageBar.helpmessage) self.testMenuList = []
def __init__(self, parent): # Create the ScrolledFrame. self.sf = Pmw.ScrolledFrame(parent, labelpos = 'n', label_text = 'ScrolledFrame', usehullsize = 1, hull_width = 400, hull_height = 220, ) # Create a group widget to contain the flex options. w = Pmw.Group(parent, tag_text='Flex') w.pack(side = 'bottom', padx = 5, pady = 3) hflex = Pmw.OptionMenu(w.interior(), labelpos = 'w', label_text = 'Horizontal:', items = ['fixed', 'expand', 'shrink', 'elastic'], command = self.sethflex, menubutton_width = 8, ) hflex.pack(side = 'left', padx = 5, pady = 3) hflex.invoke('fixed') vflex = Pmw.OptionMenu(w.interior(), labelpos = 'w', label_text = 'Vertical:', items = ['fixed', 'expand', 'shrink', 'elastic'], command = self.setvflex, menubutton_width = 8, ) vflex.pack(side = 'left', padx = 5, pady = 3) vflex.invoke('fixed') # Create a group widget to contain the scrollmode options. w = Pmw.Group(parent, tag_text='Scroll mode') w.pack(side = 'bottom', padx = 5, pady = 0) hmode = Pmw.OptionMenu(w.interior(), labelpos = 'w', label_text = 'Horizontal:', items = ['none', 'static', 'dynamic'], command = self.sethscrollmode, menubutton_width = 8, ) hmode.pack(side = 'left', padx = 5, pady = 3) hmode.invoke('dynamic') vmode = Pmw.OptionMenu(w.interior(), labelpos = 'w', label_text = 'Vertical:', items = ['none', 'static', 'dynamic'], command = self.setvscrollmode, menubutton_width = 8, ) vmode.pack(side = 'left', padx = 5, pady = 3) vmode.invoke('dynamic') self.radio = Pmw.RadioSelect(parent, selectmode = 'multiple', command = self.radioSelected) self.radio.add('center', text = 'Keep centered vertically') self.radio.pack(side = 'bottom') buttonBox = Pmw.ButtonBox(parent) buttonBox.pack(side = 'bottom') buttonBox.add('add', text = 'Add a button', command = self.addButton) buttonBox.add('yview', text = 'Show yview', command = self.showYView) buttonBox.add('scroll', text = 'Page down', command = self.pageDown) # Pack this last so that the buttons do not get shrunk when # the window is resized. self.sf.pack(padx = 5, pady = 3, fill = 'both', expand = 1) self.frame = self.sf.interior() self.row = 0 self.col = 0 for count in range(15): self.addButton()
def __init__(self, parent, filtus, notebook): Tkinter.Frame.__init__(self, parent) self.filtus = filtus self.db = None self.columnconfigure(0, weight=1) self.rowconfigure(3, weight=1) Tkinter.Label(self, text="Extract subset database", font=filtus.titlefont, anchor='c').grid(sticky='news', padx=10, pady=(15, 10)) self.lists = TwoListWidget(self, filtus=filtus, lefttoptext="Samples:") self.browser = DBbrowser(self, filtus, label="Load database:", updates=self.updateStuff) self.browser.grid(sticky='news', padx=10, pady=0) Tkinter.Frame(self, height=2, borderwidth=2, relief="sunken").grid(padx=10, pady=10, sticky="new") self.lists.grid(sticky='news', padx=10, pady=0) ### Column filter colnames = ('', 'CHROM', 'POS', 'OBS', 'HET', 'HOM', 'AFREQ') operatorNames = [ "equal to", "not equal to", "greater than", "less than" ] Tkinter.Label(self, text="Variant filter:").grid(sticky='w', pady=(5, 2), padx=10) self.columnFilter = FiltusWidgets.ColumnFilter( self, filtus=self.filtus, colnames=colnames, operatorNames=operatorNames) self.columnFilter.component('checkbutton').grid_remove() self.columnFilter.grid(sticky='nw', padx=10) ####### OUTPUT Tkinter.Frame(self, height=2, borderwidth=2, relief="sunken").grid(padx=10, pady=10, sticky="new") save_interior = Tkinter.Frame(self) save_interior.columnconfigure(0, weight=1) self.save_browser = FiltusWidgets.FileBrowser( save_interior, filtus=filtus, label="Output database file name:", checkbutton=False, labelpos='nw', browsesticky='se', entryfield_entry_width=20, browsetitle="") self.save_browser.browsebutton.configure(command=self._browseSave) self.save_browser.entryfield.configure(command=None) self.formatSelect = Pmw.RadioSelect( save_interior, buttontype="radiobutton", pady=0, labelpos="nw", labelmargin=0, label_text="Format:" ) #, hull_borderwidth = 2, hull_relief = 'ridge') self.formatSelect.add("Simple") self.formatSelect.add("Extended") self.formatSelect.invoke("Simple") self.save_browser.grid(sticky='news', padx=(10, 25), pady=(5, 10)) self.formatSelect.grid(row=0, column=1, sticky='e', padx=10, pady=0) save_interior.grid(sticky='news', padx=10, pady=0) ####### Tkinter.Frame(self, height=2, borderwidth=3, relief="raised").grid(sticky='ew', pady=15) self.lowerButtons = Pmw.ButtonBox(self, padx=50) self.lowerButtons.add('createButt', text="Extract subset", command=self.extractdb) self.lowerButtons.add('cancelButt', text="Cancel", command=notebook.deactivate) self.lowerButtons.grid(sticky='news', pady=(0, 10))
def __init__(self, master, rateObject=None): Frame.__init__(self, master) self.pack(expand=YES, fill=BOTH) self.frm_tree = Frame(self) self.frm_tree.pack(side=LEFT, fill=BOTH, expand=1) self.m_treeBrowser = None # if rateObject <> None: self.mapObjToGui(rateObject): self.frm_details = Frame(self) self.well_icon = PhotoImage( data= 'R0lGODlhDwAPAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\n/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\nAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\nMwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\nZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\nmTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\nzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\n/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\nAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\nM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\nZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\nmf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\nzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAPAA8A\nAAhUAJcIHEiwoMGDCBMSRKFwoB8UfhouSYUiVcNUD/1YTOjnH4p/ERFqzIgRYap/HlGWLIgRI8SW\nBkMuYShQI0s+pvigwInTT86fKIIKHcoz59CjSAMCADs=' ) self.closed_icon = PhotoImage( data= 'R0lGODlhDwAPAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\n/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\nAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\nMwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\nZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\nmTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\nzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\n/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\nAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\nM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\nZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\nmf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\nzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAADwAPAAAIWgAfCBxI\nsKDBgwIJKFzIkOEDAqn8RJwosSIBAAQeLNDIcePAixBTCRSZqqRJkA9Iplwp8iFGljBLusxIUqbK\nmTZjlkS5sWdHjSAbClUI4AGAo0iTJkXItOnAgAA7' ) self.open_icon = PhotoImage( data= 'R0lGODlhDwAPAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\n/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\nAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\nMwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\nZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\nmTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\nzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\n/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\nAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\nM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\nZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\nmf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\nzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAADwAPAAAIUAAfCBxI\nsKDBgwP9pFLIcKFDhQ8WHgTwAIBEPwgJpopY8UGCBB0pUsSIMaPAjRspfgzZkaTJkxxVgqRIkOTG\njH4oPtzZkCaAn0CDAn1J9GBAADs=' ) dummy = cRecurrentFile() self.widgets = [] self.headerLabel = Label(self.frm_details, text="ID") self.headerLabel.pack(side=TOP, fill=X, expand=0) #for nm in dummy.aAllowedPerfKeywords: #w = Pmw.EntryField(self.frm_details,labelpos=W,label_text=nm, validate=None) #val = w.component('entry') #val['width']= 10 #w.pack(side=TOP,fill=X,expand=0) #self.widgets.append(w) #Pmw.alignlabels(self.widgets) self.btnSaveWell = Button( self.frm_details, text="Save Selected Well") # , command=self.f_savePerf) self.btnSaveWell.pack(side=TOP, fill=X, expand=0) self.buttonBox = Pmw.ButtonBox( self.frm_details, labelpos='n', label_text='TODO Actions') # , orient='vertical') self.buttonBox.pack(side=BOTTOM, fill=X, expand=0, padx=0, pady=0) self.buttonBox.add('ADD DATE', command=lambda s=self: s.m_addDate()) self.buttonBox.add('DEL DATE', command=lambda s=self: s.m_deleteDate()) self.buttonBox.add('ADD WELL', command=lambda s=self: s.m_addWell()) self.buttonBox.add('DEL WELL', command=lambda s=self: s.m_deleteWell()) self.buttonBox.add('ADD PERF', command=lambda s=self: s.m_addWell()) self.buttonBox.add('DEL PERF', command=lambda s=self: s.m_deleteWell()) Litems = [] self.producersList = Pmw.ScrolledListBox( self.frm_details, listbox_selectmode=SINGLE, items=Litems, labelpos=N, label_text='Producers Blocks', listbox_exportselection=0, #selectioncommand = self.selectCommand, # dblclickcommand = self.selectCommand, usehullsize=1, hull_width=180, hull_height=200) self.producersList.pack(side=TOP, expand=1, fill=X) Litems = [] self.injectorsList = Pmw.ScrolledListBox( self.frm_details, listbox_selectmode=SINGLE, items=Litems, labelpos=N, label_text='Injectors Blocks', #selectioncommand = self.selectCommand, # dblclickcommand = self.selectCommand, usehullsize=1, hull_width=180, hull_height=200) self.injectorsList.pack(side=TOP, expand=1, fill=X) self.frm_details.pack(side=RIGHT, expand=1, fill=Y, pady=10) self.lastDate = None self.lastWell = None self.lastPerf = None
def main(options, args): # Create top level logger. logger = ssdlog.make_logger('EnvMonitor', options) # Create status object to be shared by all interested parties if options.statsvc: # Specified Gen2 status status_obj = Gen2StatusObject(options.statsvc) else: # Specified SOSS status status_obj = st.cachedStatusObj(options.statint) # callback for popping up wind monitor def showWindDirection(): global windWindow if windWindow: windWindow.deiconify() #windWindow.show() return # Create the base frame for the widgets WindMonitor(status_obj, logger) # Create the base frame for the widgets root = Tk() Pmw.initialise(root) root.title("Environment Monitor") root.tk.call('tk', 'scaling', 1) if options.geometry: root.geometry(options.geometry) else: root.geometry("433x742") def dialogResult(result): global quitDialog #print 'You clicked on ', result quitDialog.deactivate(result) if result == 'Yes': root.quit() def askAboutQuitting(): # Create the dialog. global quitDialog quitDialog = Pmw.Dialog(None, buttons=('No', 'Yes'), defaultbutton='Yes', title='Quit Environment Monitor?', command=dialogResult) quitDialog.geometry("300x45") quitDialog.activate(globalMode=1) quitDialog.withdraw() def _delete_main_window(): askAboutQuitting() root.protocol("WM_DELETE_WINDOW", _delete_main_window) row = 0 widget1 = sg.StatusGraph(root, title="Wind direction (deg) N:0 E:90", statusKeys=("TSCL.WINDD", ), maxDeltas=(300, ), gconfig=(None, "black", "white", (0, 360, 90), 1, 0, 1), background="#f5fffc", statusObj=status_obj) widget1.grid(row=row, column=0) widget1.tick() row += 1 widget2 = sg.StatusGraph( root, title="Wind Speed(m/s)", statusKeys=("TSCL.WINDS_O", "TSCL.WINDS_I"), alarmValues=(10, 15), #gconfig = (None, "black", "white", (-1,20,5), 1, 0, 1), background="#f7fff4", statusObj=status_obj) widget2.grid(row=row, column=0) widget2.tick() row += 1 widget3 = sg.StatusGraph(root, title="Temperature(C)", statusKeys=("TSCL.TEMP_O", "TSCL.TEMP_I"), statusObj=status_obj) widget3.grid(row=row, column=0) widget3.tick() row += 1 widget4 = sg.StatusGraph(root, title="Humidity(%)", statusKeys=("TSCL.HUMI_O", "TSCL.HUMI_I"), alarmValues=(80, 80), background="#fffff6", size=(112, 430), displayTime=True, lconfig=THINDEFAULTLINE, statusObj=status_obj) widget4.grid(row=row, column=0) widget4.tick() row += 1 widget5 = sg.StatusGraph(root, title="Air Pressure(hPa) :", size=(97, 430), statusKeys=("TSCL.ATOM", ), statusFormats=("%0.1f", ), lconfig=THINDEFAULTLINE, statusObj=status_obj) widget5.grid(row=row, column=0) widget5.tick() row += 1 widget6 = sg.StatusGraph(root, title="Rain Gauge(mm/h) :", statusKeys=("TSCL.RAIN", ), statusFormats=("%0.1f", ), alarmValues=(50, ), size=(93, 430), background="#f4f4f4", statusObj=status_obj) widget6.grid(row=row, column=0) widget6.tick() row += 1 widget7 = sg.StatusGraph(root, title="Seeing Size(arcsec)", statusKeys=("TSCL.SEEN", "VGWD.FWHM.AG"), alarmValues=(1, 1), statusFormats=("TSC: %0.1f", "VGW: %0.1f"), displayTime=True, statusObj=status_obj) widget7.grid(row=row, column=0) widget7.tick() row += 1 # widget8 = sg.StatusGraph(root, title="Sky Transparency(%) :", # statusKeys=("TSCL.THRU",), # background="#f4f4f4", # displayTime=True, statusObj=status_obj) # widget8.grid(row=row, column=0) # widget8.tick() # row +=1 bottomframe = Frame(root, width=440) buttons = Pmw.ButtonBox(bottomframe) buttons.add('Quit', command=askAboutQuitting, font=('Helvetica', 12, 'bold')) buttons.grid(row=0, column=0) resourceframe = ResourceMonitor(bottomframe, status_obj, logger) resourceframe.grid(row=0, column=1) resourceframe.tick() buttons = Pmw.ButtonBox(bottomframe) buttons.add('Wind Direction', command=showWindDirection, font=('Helvetica', 12, 'bold')) buttons.grid(row=0, column=2) bottomframe.grid(row=row, column=0) row += 1 try: try: root.mainloop() except KeyboardInterrupt: logger.error("Received keyboard interrupt!") except Exception, e: logger.error("Top-level exception raised: %s" % str(e)) raise e
hscrollmode='none', #dynamic vscrollmode='dynamic', hull_relief='sunken', #vscrollmode=dynamic hull_background='gray40', hull_borderwidth=10, text_background='honeydew4', text_width=29, #ancho pantalla #29 text_foreground='black', text_height=9, #alto pantalla text_padx=10, text_pady=10, text_relief='groove', text_font=('Arial', 12, 'bold')) display.pack(padx=0, pady=0) buttons1 = Pmw.ButtonBox(Calculadora, hull_background='gray40') buttons1.pack(fill='both', expand=1, padx=1, pady=1) #buttons1.alignbuttons() buttons1.add('2nd', width=5, bg='steelblue3', fg='white', command=nd) buttons1.add('Mode', bg='gray30', fg='white') buttons1.add('Del', bg='gray30', fg='white', command=del_) buttons1.add('Alpha', bg='gray50', fg='white') buttons1.add('Stat', bg='gray30', fg='white') buttons2 = Pmw.ButtonBox(Calculadora, hull_background='gray40') buttons2.pack(fill='both', expand=1, padx=1, pady=1) #buttons2.alignbuttons() buttons2.add('Math', width=5,
select_mode.grid(row=0, column=0, columnspan=4) # Add some buttons to the horizontal RadioSelect - mode selection buttons. for name, symbol, background in (('D', u'\u2609', 'green'), ('W', u'\u2692', 'blue'), ('P', u'\u26DD', 'yellow'), ('R', u'\u29E6', 'red')): select_mode.add(name, text=symbol, background=background) select_mode.invoke(3) # select break/rest as default # ------top left buttons------- top_left_buttons = Pmw.ButtonBox( topLeftFrame, Button_height=1, # Button_width=2, Button_font="Helvetica 15 bold", pady=1, padx=1) top_left_buttons.grid(row=0, column=0, columnspan=2) # Add some buttons to the horizontal RadioSelect. top_left_buttons.add('Delete', command=lambda: current_data.delete_item()) top_left_buttons.add('Edit') top_left_buttons.add('Save') top_left_buttons.add('Clear', command=start) # =====bottom status============= status = StringVar() bottom_status_total = Label(bottomFrame, textvariable=status,
def __init__(self, parent, inactive_channels, selected_channels=[]): ''' Constructor ''' self.__inactive_channels = inactive_channels self.__inactive_channels.sort() selected_channels.sort() ch_loader = channel_loader.ChannelLoader.getInstance() self.__channel_names_list = ch_loader.getNameDict().values() self.__channel_names_list.sort() # Update inactive_channels if channels were selected earlier # Use the fact that empty sequences (lists, etc...) are False (PEP 8) if not selected_channels: for c in selected_channels: try: self.__inactive_channels.remove(c) except ValueError: pass self.__inactive_channels = inactive_channels top = Tkinter.Toplevel(parent) top.title("F Prime Channel Telemetry Filter Selection") top.focus() # Constrain size on window so geometry works. top.maxsize(1000, 400) top.minsize(600, 400) top.lift() self.__top = top # Container Frame # f = Tkinter.Frame(top) f.pack(side=Tkinter.TOP, anchor=Tkinter.N, fill=Tkinter.BOTH, expand=1) # f2 = Tkinter.Frame(top) f2.pack(side=Tkinter.TOP, anchor=Tkinter.N, fill=Tkinter.BOTH, expand=1) f3 = Tkinter.Frame(top) f3.pack(side=Tkinter.TOP, anchor=Tkinter.N, fill=Tkinter.BOTH, expand=1) # # Build list boxes for channels # ff1 = Tkinter.LabelFrame(f2, text="Channels Avaliable:", relief=Tkinter.GROOVE, borderwidth=2, padx=5, pady=5) ff1.pack(side=Tkinter.LEFT, anchor=Tkinter.NW, fill=Tkinter.BOTH, expand=1, padx=10, pady=10) # # Scrolled log message list box here... # self.__list_box_channels = Pmw.ScrolledListBox( ff1, listbox_selectmode=Tkinter.EXTENDED, listbox_height=15, selectioncommand=self.__selectionCommandToSelected, dblclickcommand=self.__selectionCommandToSelected, items=tuple(self.__inactive_channels)) self.__list_box_channels.pack(side=Tkinter.LEFT, anchor=Tkinter.NW, fill=Tkinter.BOTH, expand=1, padx=5, pady=5) # bbox = Pmw.ButtonBox(f2, orient=Tkinter.VERTICAL) bbox.pack(side=Tkinter.LEFT) bbox.add(">", command=self.__selectChannels) bbox.add("<", command=self.__deselectChannels) bbox.add('>>', command=self.__add_all) bbox.add('<<', command=self.__clear_all) # ff2 = Tkinter.LabelFrame(f2, text="Channels Selected:", relief=Tkinter.GROOVE, borderwidth=2, padx=5, pady=5) ff2.pack(side=Tkinter.LEFT, anchor=Tkinter.NW, fill=Tkinter.BOTH, expand=1, padx=10, pady=10) # # Scrolled log message list box here... # self.__list_box_selected = Pmw.ScrolledListBox( ff2, listbox_selectmode=Tkinter.EXTENDED, listbox_height=15, selectioncommand=self.__selectionCommandToAvaliable, dblclickcommand=self.__selectionCommandToAvaliable, items=selected_channels) self.__list_box_selected.pack(side=Tkinter.LEFT, anchor=Tkinter.NW, fill=Tkinter.BOTH, expand=1, padx=5, pady=5) # # Buttons to implement all the dialog commands... # buttonBox = Pmw.ButtonBox(f3, labelpos='nw', label_text='Channel Selection Commands:') buttonBox.pack(side=Tkinter.BOTTOM, fill=Tkinter.BOTH, expand=1, padx=10, pady=10) buttonBox.add('Save', command=self.__save) buttonBox.add('Load', command=self.__load) buttonBox.add('Cancel', command=self.__cancel) buttonBox.add('Ok', command=self.__ok) # self.__all_channels_selected = inactive_channels self.__channels_selected = selected_channels self.__active_filter_selected = None # Mouse selection lists for each ScrolledListbox self.__select_to_selected = [] self.__select_to_avaliable = [] # self.__top.wait_window(self.__top)
width=300) t.grid(row=0, column=0, sticky='nsew') root.grid_rowconfigure(0, weight=1) root.grid_columnconfigure(0, weight=1) sb = Scrollbar(root) sb.grid(row=0, column=1, sticky='ns') t.configure(yscrollcommand=sb.set) sb.configure(command=t.yview) sb = Scrollbar(root, orient=HORIZONTAL) sb.grid(row=1, column=0, sticky='ew') t.configure(xscrollcommand=sb.set) sb.configure(command=t.xview) t.focus_set() btnBox = Pmw.ButtonBox(root) btnBox.grid(row=2, column=0, columnspan=3) btnBox.add('Quit', command=root.quit) btnBox.add('Add', command=lambda b='add': buttonPress(b)) btnBox.add('Del', command=lambda b='del': buttonPress(b)) editBox = Pmw.ScrolledText(root, labelpos=N, label_text='Contents', usehullsize=1, hull_height=400, hull_width=300, text_wrap=None) editBox.grid(row=0, rowspan=2, column=2, sticky='nsew') # expand out the root
def setup_ui(self,parent, logger): logger.debug("setting up ana menu gui") ''' buttons for Gen2 application''' self.buttonBoxView = Pmw.ButtonBox(parent, labelpos = 'nw', label_text = 'Viewers:', frame_borderwidth = 2, frame_relief = 'groove') self.buttonBoxView.pack(fill = 'both', expand = 1, padx = 10, pady = 10) ''' buttons for instruments ''' self.buttonBoxIns = Pmw.ButtonBox(parent, labelpos = 'nw', label_text = 'Instrument:', frame_borderwidth = 2, frame_relief = 'groove') self.buttonBoxIns.pack(fill = 'both', expand = 1, padx = 10, pady = 10) ''' buttons for more instrument ''' self.buttonBoxProg = Pmw.ButtonBox(parent, labelpos = 'nw', label_text = 'Data-sink | Ana-prog:', frame_borderwidth = 2, frame_relief = 'groove') self.buttonBoxProg.pack(fill = 'both', expand = 1, padx = 10, pady = 10) ''' status of a pressed button ''' self.messageBar = Pmw.MessageBar(parent, entry_width = 40, entry_relief='groove', labelpos = 'nw', label_text = 'Status:') self.messageBar.pack(fill = 'x', expand = 1, padx = 10, pady = 10) ''' dialog to display the status of datasink server''' self.ds_dialog = Pmw.TextDialog(parent, scrolledtext_labelpos = 'n', title = 'Frame Log', buttons = ('stop data-sink',), defaultbutton = None, command=self.stop_datasink) #label_text = 'incoming frame status') self.ds_dialog.withdraw() ''' dialog to get proposal id ''' self.prop_dialog = Pmw.PromptDialog(parent, title = 'Proposal ID', label_text = 'Prop ID:', entryfield_labelpos = 'w', #entry_show = '*', defaultbutton = 0, buttons = ('OK','Cancel'), command = self.get_propid ) self.prop_dialog.withdraw() ''' create the confirmation dialog ''' self.confirm = Pmw.MessageDialog(title = 'Prop ID Confirmation', message_text = 'Are you really sure?', defaultbutton = 0, buttons = ('OK', 'Cancel')) self.confirm.withdraw() ''' create the confirmation dialog ''' self.pid_format = Pmw.MessageDialog(title = 'PID Format Error', message_text = 'Pid Format Error\nFormat is oXXXXX', defaultbutton = 0, #icon_bitmap='error', buttons = ('Close',)) self.pid_format.withdraw() ''' Add some buttons to the ButtonBox.''' self.buttonBoxView.add('FitsViewer', command = self.launch_viewer) self.buttonBoxView.add('TelStat', command=self.launch_telstat ) #self.buttonBoxGen2.add('DataSink', command = self.init_datasink ) self.buttonBoxView.add('Ds9', command = self.launch_ds9) self.buttonBoxView.add('Skycat', command = self.launch_skycat) #self.buttonBoxGen2.add('ANA Prog',command=self.start_ana_prog ) self.buttonBoxIns.add('HDS', command = self.launch_hds) self.buttonBoxIns.add('SPCAM', command = self.launch_spcam) self.buttonBoxIns.add('FOCAS', command = self.launch_focas) self.buttonBoxIns.add('MOIRCS', command = self.launch_moircs) self.buttonBoxIns.add('IRCS', command = self.launch_ircs) self.buttonBoxProg.add('DataSink', command = self.init_datasink ) self.buttonBoxProg.add('ANA Prog',command=self.start_ana_prog ) self.buttonBoxProg.add('Avail 1',command='' ) self.buttonBoxProg.add('Avail 2',command='' ) ''' Make all the buttons the same width. ''' self.buttonBoxView.alignbuttons() self.buttonBoxIns.alignbuttons() self.buttonBoxProg.alignbuttons() ''' disable buttons ''' self.buttonBoxProg.component('DataSink').configure(state='disabled') #self.buttonBoxView.component('Avail 1').configure(state='disabled') self.buttonBoxProg.component('Avail 1').configure(state='disabled') self.buttonBoxProg.component('Avail 2').configure(state='disabled') #self. exitButton = Tkinter.Button(parent, text = 'Exit', command = parent.destroy) self. exitButton = Tkinter.Button(parent, text = 'Exit', command = self.close_window) self.exitButton.pack(side = 'bottom') logger.debug("ana menu gui done")
def __init__(self, parent, PFMF_client, set_func = lambda l,f,i : 0, enable_func=_empty_func, disable_func=_empty_func): Tkinter.Frame.__init__(self,parent) self.pack_propagate(0) self.params_width = 290 self.PFMF_client = PFMF_client self.set_func = set_func self.enable_func = enable_func self.disable_func = disable_func self.state = (None, None, None) self.jobs = {} self.search_finished = False self.qseq = None self.thread_lock = threading.Lock() self.current_thread = 0 self.matrix_text = None self.search_type_widgets = [] self.first_search = None self.plugin_widgets = [] self.plugins = [] self.default_plugin = None self.current_plugin = None # ************************************************************ # ******* Search Options on the left ************************* # ************************************************************ self.wOptions = Tkinter.Frame(self, width=self.params_width) self.wOptions.pack(side='left', anchor='nw', fill='y') self.wOptions.pack_propagate(0) # ***** Search Arguments ************************************* self.wCutoffParams = Pmw.Group(self.wOptions, tag_text='Cutoff Options') self.wCutoffParams.pack(anchor='nw', fill='x', padx=5, pady=5) self.vCutoffParams = Tkinter.IntVar() parent = self.wCutoffParams.interior() for i, st in enumerate(self._search_types): rb = Tkinter.Radiobutton(parent, text=st[1], variable=self.vCutoffParams, value=i) rb.grid(row=i+1,column=0, sticky='w') ef = Pmw.EntryField(parent, entry_width=8, validate=st[4], value=st[2]) ef.grid(row=i+1, column=1, sticky='w') self.search_type_widgets.append((rb,ef)) self.vCutoffParams.set(0) # ***** Plugin input ***************************************** self.wPluginInput = Pmw.Group(self.wOptions, tag_text='Matrix Options') self.wPluginInput.pack(fill='x', padx=5, pady=5) self.wPluginLabel = Tkinter.Label(self.wPluginInput.interior(), text='Plugin') self.wPluginLabel.grid(row=0, column=0, sticky='w', padx=5, pady=5) self.wPluginChooser = \ OptionMenu(self.wPluginInput.interior(), items = [], menubutton_width = 20, command = self.set_plugin_widgets) self.wPluginChooser.grid(row=0, column=1, sticky='w') # ***** Jobs ************************************************* self.wJobs = Pmw.Group(self.wOptions, tag_text='Jobs') self.wJobs.pack(fill='x', padx=5, pady=5) self.wJobs1 = Pmw.RadioSelect(self.wJobs.interior(), buttontype = 'radiobutton', labelpos = 'w', command = self._set_l, orient='vertical', pady=0) for text in ['Current', 'All', 'Remaining']: self.wJobs1.add(text) self.wJobs1.grid(row=1,column=0) self.wJobs2 = Pmw.RadioSelect(self.wJobs.interior(), buttontype = 'radiobutton', labelpos = 'w', orient='vertical', pady=0) for text in ['Fragments', 'Lengths']: self.wJobs2.add(text) self.wJobs2.grid(row=1, column=1, sticky='sw') self.wJobs1.invoke('Current') self.wJobs2.invoke('Lengths') self.wJobsButtons = Pmw.ButtonBox(self.wJobs.interior()) self.wJobsButtons.grid(row=2, column=0, columnspan=2, pady=2) self.wJobsButtons.add('Set', command = self._set_jobs) self.wJobsButtons.add('Unset', command = self._unset_jobs) self.wJobsButtons.add('Run', command = self._run_searches) self.wJobsButtons.alignbuttons() # ************************************************************ # ******* Sequence and Matrix on the right ******************* # ************************************************************ self.wSeqMat = Tkinter.Frame(self) self.wSeqMat.pack(side='left', anchor='nw', fill='both', expand = 1) # ***** Full sequence viewer ********************************* self.wSeqText = ScrolledSeq(self.wSeqMat, self.PFMF_client.query_sequence, self.set_func) self.wSeqText.pack(anchor='nw', fill='x') self.wSeqText.tag_config('green yellow', background = 'green yellow') self.wSeqText.tag_config('green', background = 'green') self.wSeqText.tag_config('red', background = 'red') self.wSeqText.tag_config('orange', background = 'orange') self.wSeqText.tag_config('royal blue', background = 'royal blue') # ***** Matrix viewer **************************************** self.wMatrixText = Pmw.ScrolledText(self.wSeqMat, usehullsize = 1, text_wrap='none', text_font = self.ffont, text_padx = 4, text_pady = 4, text_state = 'disabled', text_cursor = 'left_ptr', ) self.wMatrixText.pack(anchor='nw', fill='both', expand = 1)
def Host_Vector(self): self.hide() hVFrame = Toplevel() hVFrame.title("SIR WITH HOST VECTORS") hVFrame.geometry("700x800") # self.top.transient(self) g = Pmw.Blt.Graph(hVFrame) g.pack(expand=1, fill="both") E = zeros([3, 1]) A = zeros([3, 3]) C = zeros([3, 1]) A = zeros([3, 3]) B = zeros([2, 2]) E = zeros([3, 1]) C = zeros([3, 1]) # -------------------------------------------------------------------------------------------------------------------------------------------------------- # Textfields # -------------------------------------------------------------------------------------------------------------------------------------------------------- global sus1, sus2, sus3, contact1, contact2, contact3, time_interval, death_rate1, death_rate2 global death_rate3, recovery1, recovery2, recovery3 sus1 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text="Susceptibles1-S1", validate={"validator": "real"}, ) sus1.pack(expand=1, padx=5, pady=5) sus2 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text="Susceptibles2-S2", validate={"validator": "real"}, ) sus2.pack(expand=1, padx=1, pady=2) sus3 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text="Susceptibles3-S3 ", validate={"validator": "real"}, ) sus3.pack(expand=1, padx=1, pady=2) contact1 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text="Contact Rate 1-k12", validate={"validator": "real"}, ) contact1.pack(expand=1, padx=1, pady=2) contact2 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text="Contact Rate 2-k21", validate={"validator": "real"}, ) contact2.pack(expand=1, padx=1, pady=2) contact3 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text="Contact Rate 3-k23", validate={"validator": "real"}, ) contact3.pack(expand=1, padx=1, pady=2) contact4 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text="Contact Rate 4-k32", validate={"validator": "real"}, ) contact4.pack(expand=1, padx=1, pady=2) time_interval = Pmw.EntryField( hVFrame, labelpos="w", value="0", label_text=" Time Interval-t ", validate={"validator": "numeric"}, ) time_interval.pack(expand=1, padx=1, pady=2) death_rate1 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text=" Death Rate 1-d1 ", validate={"validator": "real"}, ) death_rate1.pack(expand=1, padx=1, pady=2) death_rate2 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text=" Death Rate 2-d2 ", validate={"validator": "real"}, ) death_rate2.pack(expand=1, padx=1, pady=2) death_rate3 = Pmw.EntryField( hVFrame, labelpos="w", value="0.0", label_text=" Death Rate 3-d3 ", validate={"validator": "real"}, ) death_rate3.pack(expand=1, padx=1, pady=2) recovery1 = Pmw.EntryField( hVFrame, labelpos="w", value="0.00", label_text="Recovery Rate 1", validate={"validator": "real"}, ) recovery1.pack(expand=1, padx=1, pady=2) recovery2 = Pmw.EntryField( hVFrame, labelpos="w", value="0.00", label_text="Recovery Rate 2", validate={"validator": "real"}, ) recovery2.pack(expand=1, padx=1, pady=2) recovery3 = Pmw.EntryField( hVFrame, labelpos="w", value="0.00", label_text="Recovery Rate 3", validate={"validator": "real"}, ) recovery3.pack(expand=1, padx=1, pady=2) # ------------------------------------------------------------------------------------------------------------------------------------------------------ # self.top.transient(self) # self.wButton.config(state='disabled') def retrive(): k12 = float(contact1.get()) k21 = float(contact2.get()) k23 = float(contact3.get()) k32 = float(contact4.get()) ddelta1 = float(death_rate1.get()) ddelta2 = float(death_rate2.get()) ddelta3 = float(death_rate3.get()) ggamma1 = float(recovery1.get()) ggamma2 = float(recovery2.get()) ggamma3 = float(recovery3.get()) N = int(time_interval.get()) s0 = float(sus1.get()) I0 = float(sus2.get()) R0 = float(sus3.get()) A[0][0] = 0 A[0][1] = k12 A[0][2] = 0 A[1][0] = k21 A[1][1] = 0 A[1][2] = k23 A[2][0] = 0 A[2][1] = k32 A[2][2] = 0 B[0][0] = 0 B[0][1] = 0 B[1][0] = 0 B[1][1] = 0 E[0][0] = -k12 - (ggamma1 + ddelta1) E[1][0] = -k21 - k23 - (ggamma2 + ddelta2) E[2][0] = -k32 - (ggamma3 + ddelta3) C[0][0] = ddelta1 + ggamma1 C[1][0] = ddelta2 + ggamma2 C[2][0] = ddelta3 + ggamma3 def f1(s1, I1, R1): s_dot = s1 * E[0][0] + A[0][1] * s1 * I1 + C[0][0] return s_dot def f2(s1, I1, R1): I_dot = I1 * E[1][0] + A[1][0] * s1 * I1 + A[1][2] * I1 * R1 + C[1][0] return I_dot def f3(s1, I1, R1): R_dot = E[2][0] * R1 + A[2][1] * I1 * R1 + C[2][0] return R_dot # =========RATE OF CHANGE OF THE MODEL WITH RESPECT TO TIME AND DECLARATON OF CONSTANTS============================================================== t = arange(0, N, 0.02455) s1 = zeros(len(t)) I1 = zeros(len(t)) R1 = zeros(len(t)) s1[0] = s0 I1[0] = I0 R1[0] = R0 h = 0.01 # ==========ITERATION FOR A GIVEN TIME INTERVAL====================================================================================================== for n in range(len(t) - 1): s1[n + 1] = s1[n] + h * (f1(s1[n], I1[n], R1[n])) I1[n + 1] = I1[n] + h * (f2(s1[n], I1[n], R1[n])) R1[n + 1] = R1[n] + h * (f3(s1[n], I1[n], R1[n])) x_ = tuple(t) y_ = tuple(s1) z_ = tuple(I1) w_ = tuple(R1) g.configure( title="A graph of Susceptible and Infective against time for SIR with Host-Vector" ) g.line_create( "S1(t) Vs t", xdata=x_, color="blue", ydata=y_, linewidth=2, symbol="" ) g.line_create( "S2(t) Vs t", xdata=x_, color="orange", ydata=z_, linewidth=2, symbol="" ) g.line_create( "S3(t) Vs t", xdata=x_, color="red", ydata=w_, linewidth=2, symbol="" ) def postscript(): g.postscript_output(fileName="HelloUser1.ps", decorations="no") def newFile(): for name in g.element_names(): g.element_delete(name) contact1.setentry("") contact2.setentry("") contact3.setentry("") contact4.setentry("") recovery1.setentry("") recovery2.setentry("") recovery3.setentry("") time_interval.setentry("") sus1.setentry("") sus2.setentry("") sus3.setentry("") death_rate1.setentry("") death_rate2.setentry("") death_rate3.setentry("") # -------------------------------------------------------------------------------------------------------------------------------------------------------- buttons = Pmw.ButtonBox(hVFrame, labelpos="w", label_text="Options") buttons = Pmw.ButtonBox(hVFrame, labelpos="w", label_text="Options") buttons.pack(fill="both", expand=1, padx=10, pady=10) buttons.add("GRID", bg="green", command=g.grid_toggle) buttons.add("PLOT", bg="green", command=retrive) buttons.add("CLEAR", bg="green", command=newFile) buttons.add("SAVE", bg="green", command=postscript) handler = lambda: self.onCloseOtherFrameV(hVFrame) buttons.add("QUIT", bg="red", command=handler)
def __init__(self, master, pso_in): self.win = Toplevel() self.pso = pso_in label = Label(self.win, text="MoveFrequency") label.grid(row=0) self.moveFrequency = self.pso.optFunction.get_moveFrequency() self.e1 = Entry(self.win) self.e1.insert(END, str(self.moveFrequency)) self.e1.grid(row=0, column=1) label = Label(self.win, text="MoveDistance") label.grid(row=1) self.moveDistance = self.pso.optFunction.get_moveDistance() self.e2 = Entry(self.win) self.e2.insert(END, str(self.moveDistance)) self.e2.grid(row=1, column=1) # self.l1 = Listbox(self.win, selectmode=SINGLE, height=2 ) # for item in OPTMOVESTYLE_SELECTION: # self.l1.insert(END, item) # self.l1.select_set(self.optFunction.get_optMoveStyle()) # self.l1.activate(self.optFunction.get_optMoveStyle()) # self.l1.grid(row=2, column=1) self.menu1 = Pmw.OptionMenu(self.win, labelpos='w', label_text='OptimumMoveStyle:', items=OPTMOVESTYLE_SELECTION, menubutton_width=15) self.menu1.setvalue( OPTMOVESTYLE_SELECTION[self.pso.optFunction.get_optMoveStyle()]) self.menu1.grid(row=2, columnspan=2) self.menu2 = Pmw.OptionMenu(self.win, labelpos='w', label_text='UpdateStyle:', items=UPDATESTYLE_SELECTION, menubutton_width=15) self.menu2.setvalue( UPDATESTYLE_SELECTION[self.pso.optFunction.get_updateStyle()]) self.menu2.grid(row=3, columnspan=2) self.menu3 = Pmw.OptionMenu(self.win, labelpos='w', label_text='DetectionMethod:', items=DETECTIONMETHOD_SELECTION, menubutton_width=15) self.menu3.setvalue( DETECTIONMETHOD_SELECTION[self.pso.get_detectionMethod()]) self.menu3.grid(row=4, columnspan=2) self.menu4 = Pmw.OptionMenu(self.win, labelpos='w', label_text='ResponseMethod:', items=RESPONSEMETHOD_SELECTION, menubutton_width=15) self.menu4.setvalue( RESPONSEMETHOD_SELECTION[self.pso.get_responseMethod()]) self.menu4.grid(row=5, columnspan=2) # make s row of buttons buttons = Pmw.ButtonBox(self.win) buttons.grid(row=6, columnspan=2, padx=10, pady=10) buttons.add('Apply', command=self.apply) buttons.add('Cancel', command=self.win.destroy)
import Pmw root = Tk() root.option_readfile('optionDB') root.title('ButtonBox') Pmw.initialise() def buttonPress(btn): print 'The "%s" button was pressed' % btn def defaultKey(event): buttonBox.invoke() buttonBox = Pmw.ButtonBox(root, labelpos='nw', label_text='ButtonBox:') buttonBox.pack(fill=BOTH, expand=1, padx=10, pady=10) buttonBox.add('OK', command=lambda b='ok': buttonPress(b)) buttonBox.add('Apply', command=lambda b='apply': buttonPress(b)) buttonBox.add('Cancel', command=lambda b='cancel': buttonPress(b)) # Set the default button (the one executed when <Enter> is hit). buttonBox.setdefault('OK') root.bind('<Return>', defaultKey) root.focus_set() buttonBox.alignbuttons() root.mainloop()
def fillInUI(self, parent): global _mp _mp = self self.parent = parent # model table self.frequentButtons = [] self.infrequentButtons = [] self._getConfig() import Pmw # action buttons self.buttonScroll = Pmw.ScrolledFrame(self.parent, hscrollmode='none') self.buttonScroll.grid(row=10, column=20, sticky='nsew') self.freqActionButtons = Pmw.ButtonBox(self.buttonScroll.interior(), orient='vertical', pady=0) self.freqActionButtons.pack() self._shownActions = self.freqActionButtons self.infreqActionButtons = Pmw.ButtonBox(self.buttonScroll.interior(), orient='vertical', pady=0) self._freqToggle = Pmw.OptionMenu( self.parent, command=self._freqToggleCB, items=["frequently used", "infrequently used"], initialitem="frequently used") self._freqToggle.grid(row=20, column=20) self._addColumns() # add buttons from other extensions... self._addButtons() # add standard buttons addButton("add/edit note...", noteCmd, balloon="add notation" " that will be displayed in model table") addButton("activate", lambda m, f='active', v=1, smf=setModelField: smf( m, f, v, openState=1), moleculesOnly=False, defaultFrequent=False, balloon="make selected models active" "\n(responsive to mouse motions)") addButton("activate all", lambda m, f=activateAllCmd: f(), minModels=0, moleculesOnly=False, balloon="activate all models;\n" "restore previous active states with this same button") addButton("activate only", lambda m, f='active', smfo=setModelFieldOnly: smfo( m, f, openState=1), moleculesOnly=False, balloon="make selected models active" "\n(responsive to mouse motions);\ndeactivate others") addButton("attributes...", attributesCmd, moleculesOnly=False, balloon="inspect/modify model attributes") def runClipping(models): import ModelClip cd = chimera.dialogs.display(ModelClip.ClipDialog.name) cd.setModel(models[0]) addButton("clipping...", runClipping, moleculesOnly=False, balloon="adjust per-model clipping plane") addButton("close", openModels.close, moleculesOnly=False, balloon="close models") addButton("deactivate", lambda m, f='active', v=0, smf=setModelField: smf( m, f, v, openState=1), moleculesOnly=False, defaultFrequent=False, balloon="make selected models inactive" "\n(insensitive to mouse motions)") addButton("focus", focusCmd, moleculesOnly=False, balloon="bring selected models fully into view" "\nin main graphics window") addButton("hide", lambda m, f='display', v=0, smf=setModelField: smf(m, f, v), moleculesOnly=False, defaultFrequent=False, balloon="hide selected models; undo with 'show'") def showRainbowDialog(models): from chimera import dialogs from rainbow import RainbowDialog if len(models) > 1: target = "models" else: target = "residues" dialogs.display(RainbowDialog.name).configure(models=models, target=target) addButton("rainbow...", showRainbowDialog, balloon="rainbow-color residues or chains") addButton("rename...", renameCmd, moleculesOnly=False, maxModels=1) addButton("select", selectCmd, moleculesOnly=False, balloon="incorporate models into graphics window" "\nselection using current selection mode" "\n(see graphics window Selection menu)") from chainPicker import ChainPicker addButton("select chain(s)...", lambda m, cp=ChainPicker: cp(m).enter(), balloon="select some/all chains\n" "(using current selection\n" "mode from Selection menu)") addButton("sequence...", seqCmd, balloon="inspect molecule sequence") addButton("show", lambda m, f='display', v=1, smf=setModelField: smf(m, f, v), moleculesOnly=False, defaultFrequent=False, balloon="unhide selected models") addButton("show all atoms", showAllAtomsCmd, balloon="show all atoms" " (but use 'show' to undo 'hide')") addButton("show only", lambda m, f='display', smfo=setModelFieldOnly: smfo(m, f), moleculesOnly=False, balloon="show selected models and hide all others") addButton("surface main", lambda m, c="main", sc=surfCmd: sc(m, c), balloon="surface non-ligand portion of models") def showTileDialog(models): from chimera import dialogs from EnsembleMatch.choose import TileStructuresCB dialogs.display(TileStructuresCB.name).configure(models=models) addButton("tile...", showTileDialog, minModels=2, moleculesOnly=False, balloon="arrange selected models into a" "\nrectangular grid and focus on them") addButton( "toggle active", lambda m, f='active', tmf=toggleModelField: tmf(m, f, openState=1), moleculesOnly=False, balloon="invert active states of selected models") addButton("trace backbones", lambda m, bc=backboneCmd: bc(m, resTrace=0), balloon="show backbone atom trace for protein" "\nor nucleic acid; undo with 'show all atoms'") addButton("trace chains", backboneCmd, balloon="show residue connectivity trace for protein" "\nor nucleic acid; undo with 'show all atoms'") from transformDialog import TransformDialog addButton("transform as...", TransformDialog, moleculesOnly=False, balloon="rotate/translate models same as another model") from writePDBdialog import WritePDBdialog addButton("write PDB", lambda mols: chimera.dialogs.display(WritePDBdialog.name). configure(mols, selOnly=False), balloon="write molecule as PDB file") from ksdsspDialog import KsdsspDialog addButton("compute SS", KsdsspDialog, balloon="compute secondary structure elements" "\nusing Kabsch and Sander algorithm") maxWidth = 0 for actionButtons in [ self.freqActionButtons, self.infreqActionButtons ]: for i in range(actionButtons.numbuttons()): w = actionButtons.button(i).winfo_reqwidth() if w > maxWidth: maxWidth = w self.buttonScroll.component('clipper').configure(width=maxWidth + 2, height='2i') # add these last, since if they somehow fire before the # constructor is complete then an exception will occur chimera.triggers.addHandler('Model', self._fillTable, None) chimera.triggers.addHandler('OpenState', self._fillTable, None)
def __init__(self): self.plugin_type = PLUGIN root = Toplevel() root.title('MOLE 2.5') root.resizable(0, 0) self.parent = root # region Create Frame and NoteBook self.mainframe = Frame(self.parent, width=463, height=623) self.mainframe.pack(fill='both', expand=1) self.mainframe.bind( '<<WrongExecutable>>', lambda e: self.when_error( e, 'Your MOLE 2.0 executable was not found!')) root.bind( '<F5>', (lambda event: self.set_structures(self.input_structure_box))) balloon = Pmw.Balloon(self.mainframe) self.points = {} # Binary file, Working directory, csa file self.main_parameters = ['', '', ''] self.notebook = Pmw.NoteBook(self.mainframe) self.notebook.pack(fill='both', expand=1, padx=10, pady=10) # endregion # region self.mainPage / settings self.mainpage = self.notebook.add('Compute Tunnels') self.mainpage.focus_set() input_structure_group = Pmw.Group(self.mainpage, tag_text='Specify Input Structure') input_structure_group.pack(fill='both') starting_point_group = Pmw.Group(self.mainpage, tag_text='Specify Starting Point') starting_point_group.pack(fill='both') if self.plugin_type == "PyMOL": initialized_structs = ('all', ) + plugin.return_tuple_objects() else: initialized_structs = () self.input_structure_box = Pmw.ScrolledListBox( input_structure_group.interior(), items=initialized_structs, labelpos='nw', listbox_height=4, listbox_selectmode=EXTENDED, ) self.input_structure_box.component('listbox').configure( exportselection=0, background='white') self.input_structure_box.pack(fill='both', expand=0, padx=10, pady=5) balloon.bind( self.input_structure_box, 'Select one or more structures in which you want to find channels.' ) if self.plugin_type == "Chimera": self.input_structure_box.insert('end', 'all') if plugin.return_object_list() is not None: for item in plugin.return_object_list(): self.input_structure_box.insert('end', item) query = Pmw.Group(input_structure_group.interior(), tag_text="Not Active Residues") query.pack(fill='both') self.query_entry = Entry(query.interior(), width=65) self.query_entry.config(background='white') self.query_entry.grid(column=0, row=0, padx=10, pady=5, sticky=W + E + N + S) self.query_entry.columnconfigure(0, minsize=65) self.query_entry.bind( "<KeyRelease>", lambda event: root.after(2500, self.validate_query)) self.query_entry.bind('<Control-KeyRelease-a>', lambda event: self.select_all_query_entry()) self.query_entry.focus_set() balloon.bind(self.query_entry, 'Input not active residues here') self.query_label = Label( query.interior(), text= 'Select atoms/residues not to be included in the calculation using PatternQuery ' 'syntax.', width=68) self.query_label.grid(column=0, row=1, padx=10, pady=5, sticky=W + E + N + S, columnspan=2) self.query_help = Label(query.interior(), text='?', fg="blue", cursor="hand2") self.query_help.grid(column=1, row=0, padx=[0, 10], pady=5) self.query_help.bind( "<Button-1>", lambda event: webbrowser.open_new( "https://webchem.ncbr.muni.cz/Wiki" "/PatternQuery:UserManual")) balloon.bind(self.query_help, 'PatternQuery Wiki pages.') self.is_valid = False self.start_points_box = Pmw.ScrolledListBox( starting_point_group.interior(), items=(), labelpos='nw', listbox_height=4, listbox_selectmode=EXTENDED) self.start_points_box.component('listbox').configure( exportselection=0, background='white') self.start_points_box.pack(fill='both', expand=0, padx=10, pady=5) balloon.bind( self.start_points_box, 'Starting point list. If no starting point is specified, \nMOLE plugin will try to find suitable ' 'starting points automatically.\nOtherwise all selected points will be used.' ) self.button_box1 = Pmw.ButtonBox(starting_point_group.interior()) self.button_box1.pack(fill='both', expand=0, padx=10, pady=5) self.button_box1.add( 'AddStartingPoint', text='Add Starting Point', command=lambda: self.add_point(self.start_points_box)) self.button_box1.add( 'RemoveStartingPoint', text='Remove Starting Point', command=lambda: self.remove_point(self.start_points_box)) self.button_box1.add( 'RefreshStructures', text='Refresh Structures', command=lambda: self.set_structures(self.input_structure_box)) self.button_box1.alignbuttons() property_group = Pmw.Group(self.mainpage, tag_pyclass=None) property_group.pack(fill='both') self.overwrite_results = BooleanVar() self.overwrite_results.set(True) self.overwrite_results_button = Checkbutton( property_group.interior(), text="Overwrite results", variable=self.overwrite_results, onvalue=True, offvalue=False) self.overwrite_results_button.grid(column=0, row=0, padx=10, pady=5, sticky=W + E + N + S) balloon.bind( self.overwrite_results_button, 'If checked MOLE will overwrite old files in output folder. Otherwise, new folder will be ' 'created in output folder.') self.remove_hydrogens = BooleanVar() self.remove_hydrogens_button = Checkbutton( property_group.interior(), text="Remove hydrogens", variable=self.remove_hydrogens, onvalue=True, offvalue=False) self.remove_hydrogens_button.grid(column=1, row=0, padx=10, pady=5, sticky=W + E + N + S) balloon.bind( self.remove_hydrogens_button, 'If checked MOLE will remove all hydrogens from the structure prior to the calculation.' ) self.ignore_het = BooleanVar() self.ignore_het_button = Checkbutton(property_group.interior(), text="Ignore HETeroatoms", variable=self.ignore_het, onvalue=True, offvalue=False) self.ignore_het_button.grid(column=2, row=0, padx=10, pady=5, sticky=W + E + N + S) balloon.bind( self.ignore_het_button, 'If checked MOLE will exclude all HETATM entries prior to the calculation.' ) self.select_working_directory_button = Button( property_group.interior(), text='Save output to:', command=self.select_working_directory) self.select_working_directory_button.grid(row=1, column=0, sticky=W + E + N + S, padx=10, pady=5) self.select_working_directory_button.columnconfigure(0, weight=1) balloon.bind(self.select_working_directory_button, 'Where do you wish to save output from MOLE 2.0 plugin.') self.working_directory = Pmw.EntryField(property_group.interior(), labelpos='w') self.working_directory.component('entry').configure(background='white') self.working_directory.grid(row=1, column=1, columnspan=2, sticky=W + E + N + S, padx=10, pady=5) balloon.bind(self.working_directory, 'Where do you wish to save output from MOLE 2.0 plugin.') self.generate_csa_selections_button = Button( property_group.interior(), text='Generate CSA sites:', command=self.CSA_button_click) self.generate_csa_selections_button.grid(column=0, row=2, sticky=W + E + N + S, padx=10, pady=5) balloon.bind( self.generate_csa_selections_button, 'Specify structure by writing its PDB ID and press Generate button.' ) self.structure_for_CSA = Pmw.EntryField(property_group.interior(), labelpos='w') self.structure_for_CSA.component('entry').configure(background='white') self.structure_for_CSA.component('entry').bind( '<Return>', lambda event: self.CSA_button_click()) self.structure_for_CSA.grid(column=1, row=2, columnspan=2, sticky=W + E + N + S, padx=10, pady=5) balloon.bind( self.structure_for_CSA, 'Specify structure by writing its PDB ID and press Generate button.' ) self.select_CSA_button = Button(property_group.interior(), text='Select CSA file:', command=self.select_CSA) self.select_CSA_button.grid(column=0, row=3, sticky=W + E + N + S, padx=10, pady=5) balloon.bind( self.select_CSA_button, 'Insert location of CSA.dat file containing CSA database for suggesting active sites as a ' 'starting points.') self.CSA = Pmw.EntryField(property_group.interior(), labelpos='w') self.CSA.component('entry').configure(background='white') self.CSA.grid(column=1, columnspan=2, row=3, sticky=W + E + N + S, padx=10, pady=5) balloon.bind( self.CSA, 'Insert location of CSA.dat file containing CSA database for suggesting active sites as a ' 'starting points.') self.select_executable_button = Button(property_group.interior(), text='MOLE 2.5 location:', command=self.select_executable) self.select_executable_button.grid(column=0, row=4, sticky=W + E + N + S, padx=10, pady=5) balloon.bind( self.select_executable_button, 'Select proper path to the MOLE 2.0 command line location') self.executable = Pmw.EntryField(property_group.interior(), labelpos='w') self.executable.component('entry').configure(background='white') self.executable.grid(column=1, columnspan=2, row=4, sticky=W + E + N + S, padx=10, pady=5) balloon.bind( self.executable, 'Select proper path to the MOLE 2.5 command line location.') self.compute_tunnels_button = Button( self.mainpage, text='Compute Tunnels', font=("Helvetica", 12, "bold"), command=lambda b='tunnels': Manager.Manager( ).construct_params_and_run(self, b)) self.compute_tunnels_button.pack(side=BOTTOM, fill='both', expand=0, padx=10, pady=5) # endregion # region self.paramsPage / params self.params_page = self.notebook.add('Settings') cavity_parameters_group = Pmw.Group(self.params_page, tag_text='Cavity Parameters') cavity_parameters_group.pack(fill='both', expand=4) self.probe_radius = Pmw.Counter(cavity_parameters_group.interior(), labelpos='w', label_text='Probe Radius', entryfield_value='3', increment=0.1, entryfield_validate={ 'validator': 'real', 'separator': '.', 'min': 1.4, 'max': 45 }, datatype={ 'counter': 'real', 'separator': '.' }) self.probe_radius.component('entry').configure(background='white') balloon.bind(self.probe_radius, 'Radius used for construction of molecular surface.') self.interior_threshold = Pmw.Counter( cavity_parameters_group.interior(), labelpos='w', label_text='Interior Threshold', entryfield_value='1.25', increment=0.1, entryfield_validate={ 'validator': 'real', 'separator': '.', 'min': 0.8, 'max': 45.0 }, datatype={ 'counter': 'real', 'separator': '.' }) self.interior_threshold.component('entry').configure( background='white') balloon.bind(self.interior_threshold, 'Lower bound of the tunnel radius.') self.surface_cover_radius = Pmw.Counter( cavity_parameters_group.interior(), labelpos='w', label_text='Surface Cover Radius', entryfield_value='10', increment=0.1, entryfield_validate={ 'validator': 'real', 'separator': '.', 'min': 5.0, 'max': 25.0 }, datatype={ 'counter': 'real', 'separator': '.' }) self.surface_cover_radius.component('entry').configure( background='white') balloon.bind( self.surface_cover_radius, 'Determines the density of tunnel exits on the molecular surface.') self.origin_radius = Pmw.Counter(cavity_parameters_group.interior(), labelpos='w', label_text='Origin Radius', entryfield_value='5', increment=0.1, entryfield_validate={ 'validator': 'real', 'separator': '.', 'min': 0.1, 'max': 10.0 }, datatype={ 'counter': 'real', 'separator': '.' }) self.origin_radius.component('entry').configure(background='white') balloon.bind( self.origin_radius, 'Better starting points are localized within the defined radius from the original starting point.' ) filter_settings = Pmw.Group(self.params_page, tag_text='Tunnel Parameters') filter_settings.pack(fill='both', expand=4) self.bottleneck_radius = Pmw.Counter(filter_settings.interior(), labelpos='w', label_text='Bottleneck Radius', entryfield_value='1.25', increment=0.1, entryfield_validate={ 'validator': 'real', 'separator': '.', 'min': 0.1, 'max': 6.0 }, datatype={ 'counter': 'real', 'separator': '.' }) self.bottleneck_radius.component('entry').configure(background='white') balloon.bind(self.bottleneck_radius, 'The minimum radius of a tunnel.') self.bottleneck_length = Pmw.Counter(filter_settings.interior(), labelpos='w', label_text='Bottleneck Length', entryfield_value='3', increment=0.1, entryfield_validate={ 'validator': 'real', 'separator': '.', 'min': 0.0, 'max': 20.0 }, datatype={ 'counter': 'real', 'separator': '.' }) self.bottleneck_length.component('entry').configure(background='white') balloon.bind( self.bottleneck_length, 'Length of a possible profile narrower than the Bottleneck Radius') self.cutoff_ratio = Pmw.Counter(filter_settings.interior(), labelpos='w', label_text='Cutoff Ratio', entryfield_value='0.7', increment=0.05, entryfield_validate={ 'validator': 'real', 'separator': '.', 'min': 0.0, 'max': 1.0 }, datatype={ 'counter': 'real', 'separator': '.' }) self.cutoff_ratio.component('entry').configure(background='white') balloon.bind( self.cutoff_ratio, 'Determines maximum similarity of tunnels centerline. \nIf two tunnels are more similar than the ' 'threshold, the longer is discarded.') # region load executable location from settingsfile temp_path = os.path.normcase( str(os.environ['TEMP']) if 'win32' == str.lower(sys.platform) else '/tmp/') if os.path.exists(CONFIGFILE): try: with open(CONFIGFILE, 'r') as f: self.main_parameters = list( map(lambda x: os.path.normcase(x), pickle.load(f))) self.executable.setvalue(self.main_parameters[0]) self.working_directory.setvalue(self.main_parameters[1]) self.CSA.setvalue(self.main_parameters[2]) except: self.executable.setvalue('') self.working_directory.setvalue(temp_path) self.CSA.setvalue('') else: self.working_directory.setvalue(temp_path) self.main_parameters[1] = temp_path with open(CONFIGFILE, 'w') as f: pickle.dump(self.main_parameters, f) # endregion self.params = (self.probe_radius, self.interior_threshold, self.surface_cover_radius, self.origin_radius, self.bottleneck_radius, self.bottleneck_length, self.cutoff_ratio) Pmw.alignlabels(self.params) for counter in self.params: counter.pack(fill='both', expand=1, padx=10, pady=5) weight_function_group = Pmw.Group(self.params_page, tag_text='Weight Function') weight_function_group.pack(fill='both', expand=0) self.weight_function = StringVar() self.voronoi_button = Radiobutton(weight_function_group.interior(), text='Voronoi Scale', variable=self.weight_function, value="VoronoiScale") self.voronoi_button.grid(column=0, row=0, padx=30, pady=5, sticky=W + E + N + S) balloon.bind( self.voronoi_button, 'Recommended for identification of tunnels leading to the buried active sites' ) self.length_radius_button = Radiobutton( weight_function_group.interior(), text='Length + Radius', variable=self.weight_function, value="LengthAndRadius") self.length_radius_button.grid(column=1, row=0, padx=30, pady=5, sticky=W + E + N + S) balloon.bind(self.length_radius_button, 'Old and universal MOLE 2.0 weight function') self.length_button = Radiobutton(weight_function_group.interior(), text='Length', variable=self.weight_function, value="Length") self.length_button.grid(column=2, row=0, padx=30, pady=5, sticky=W + E + N + S) balloon.bind(self.length_button, 'Recommended for identification of transmembrane pores') self.voronoi_button.invoke() # endregion # region self.pathPage / settings self.path_page = self.notebook.add('Compute Pores') input_structure_group = Pmw.Group( self.path_page, tag_text='Specify pores starting points') input_structure_group.pack(fill='both') self.path_starting_points_box = Pmw.ScrolledListBox( input_structure_group.interior(), items=(), labelpos='nw', label_text='Starting Points', listbox_height=4, listbox_selectmode=EXTENDED) self.path_starting_points_box.component('listbox').configure( exportselection=0, background='white') self.path_starting_points_box.pack(fill='both', expand=0, padx=10, pady=5) self.path_starting_points_box.bind( '<Delete>', lambda event: self.remove_point(self.path_starting_points_box)) balloon.bind( self.path_starting_points_box, 'Starting point list. Every starting point must have coresponding end point.' ) self.button_box2 = Pmw.ButtonBox(input_structure_group.interior()) self.button_box2.pack(fill='both', expand=0, padx=10, pady=5) self.button_box2.add( 'AddStartingPoint', text='Add Starting Points', command=lambda: self.add_point(self.path_starting_points_box)) self.button_box2.add( 'RemoveStartingPoint', text='Remove Starting Points', command=lambda: self.remove_point(self.path_starting_points_box)) self.button_box2.alignbuttons() input_structure_group = Pmw.Group(self.path_page, tag_text='Specify pores end points') input_structure_group.pack(fill='both') self.path_end_points_box = Pmw.ScrolledListBox( input_structure_group.interior(), items=(), labelpos='nw', label_text='End Points', listbox_height=4, listbox_selectmode=EXTENDED) self.path_end_points_box.component('listbox').configure( exportselection=0, background='white') self.path_end_points_box.bind( '<Delete>', lambda event: self.remove_point(self.path_end_points_box)) self.path_end_points_box.pack(fill='both', expand=0, padx=10, pady=5) balloon.bind( self.path_end_points_box, 'End points list. Every end point must have coresponding starting point.' ) self.button_box3 = Pmw.ButtonBox(input_structure_group.interior()) self.button_box3.pack(fill='both', expand=0, padx=10, pady=5) self.button_box3.add( 'AddEndPoint', text='Add End Points', command=lambda: self.add_point(self.path_end_points_box)) self.button_box3.add( 'RemoveEndPoint', text='Remove end points', command=lambda: self.remove_point(self.path_end_points_box)) self.button_box3.alignbuttons() self.compute_pores_button = Button( self.path_page, text='Compute Pores', font=("Helvetica", 12, "bold"), command=lambda b='pores': Manager.Manager( ).construct_params_and_run(self, b)) self.compute_pores_button.pack(fill='both', expand=0, padx=10, pady=5) # endregion # prev set # region READ self.read_page = self.notebook.add('Read Channels') read_group = Pmw.Group( self.read_page, tag_text='Select a file with previously computed MOLE tunnels/pores' ) read_group.pack(fill='both') self.open_channels_button = Button(read_group.interior(), text='Open computation results', command=self.open_channels, font=("Helvetica", 12, "bold")) self.open_channels_button.pack(fill='both', expand=0, padx=10, pady=5) # endregion # region QuickStartGuide self.guide_page = self.notebook.add('Quick Guide') guide = Text(self.guide_page, width=72, wrap=WORD) guide.config(padx=5, pady=8) guide.tag_configure('big', font=('Arial', 12, 'bold')) guide.tag_configure('plain_text', font=('Arial', 10)) guide.tag_configure('smaller', font=('Arial', 9)) guide.insert(END, 'Plugin description:\n\n', 'big') plugin_description = ( "The plugin is separated into several tabs The crucial for the calculation are: " "Compute Tunnels, Settings, and Compute Pores. At first, specify location of output " "folder and MOLE 2.5 command line executable. Afterwards, select a structure in the " "'input structure listbox' and starting point from the 'starting point listbox'. " "Additionally, if you provide a path to the CSA database [1], the plugin will suggest " "you the potential starting points.\n\n") guide.insert(END, plugin_description, 'plain_text') guide.insert(END, "Run:\n\n", 'big') run_description = ( "After selecting one or more structures and one or more starting points by clicking 'Add Starting Point'. Additional " "search parameters can be adjusted in the Settings tabs. For further info on how to use this " "please refer the included manual or visit our webpages. Whenever you would feel lost just " "hover your cursor above any element in order to get tooltip. For more info and news about the " "MOLE 2.5 visit our webpages.\n") guide.insert(END, run_description, 'plain_text') improve_text = ( "\n" "Also if you would like to make a suggestion on how to " "improve MOLE or send a bug report, please contact authors at [email protected] " "or the author of this extension directly - [email protected]\n\n" ) guide.insert(END, improve_text, 'plain_text') guide.insert(END, "Happy tunneling! ", 'big') team_text = ( "Mole development team. http://mole.chemi.muni.cz\n\n" "[1] Furnham,N., Holliday,G.L., De Beer,T.A.P., Jacobsen,J.O.B., Pearson,W.R. and Thornton,J.M. (2014) " "The Catalytic Site Atlas 2.0: Cataloging catalytic sites and residues identified in enzymes. Nucleic " "Acids Res., 42, 1–5.") guide.insert(END, team_text, 'smaller') guide.config(state=DISABLED) guide.pack(side=LEFT, fill='both') # endregion # region AuthorsPage self.authors_page = self.notebook.add('Authors') authors_text_widget = Text(self.authors_page, width=72, height=17) authors_text_widget.config(padx=5, bg='#52A300', pady=8) authors_text_widget.tag_configure('plain_text', font=('Arial', 10), foreground='white') authors_text_widget.insert( END, "If you find this tool useful for your work please cite it as:\n\n", 'plain_text') cite_text = ( "Sehnal D, Svobodova Varekova R, Berka K, Pravda L, Navratilova V,\nBanas P, Ionescu C-M, Otyepka M, " "Koca J. MOLE2.0: advanced approach for analysis of biomacromolecular channels. Journal of " "Cheminformatics 2013, 5:39., doi:10.1186/1758-2946-5-39.\n\n" "If you were using the web server, which is available at http://mole.upol.cz/ please cite it as:\n\n" "Berka K, Hanak O, Sehnal D, Banas P, Navratilova V, Jaiswal D,Ionescu C-M, Svobodova Varekova R, " "Koca J, Otyepka M.\nMOLEonline 2.0: interactive web-based analysis of biomacromolecular\nchannels. Nucleic " "acids research 2012, 40:W222?7., doi:10.1093/nar/gks363") authors_text_widget.insert(END, cite_text, 'plain_text') authors_text_widget.config(state=DISABLED) authors_text_widget.pack(side=LEFT, fill='both') # endregion Label( self.mainframe, relief='sunken', anchor=W, justify=LEFT, bg='#52A300', fg='white', font=("Helvetica", 12), padx=10, pady=10, text= "(c) 2017 CEITEC & NCBR MU & FCH UPOL\nhttp://mole.chemi.muni.cz v. " "2.5.17.7.11").pack(fill='both') self.notebook.setnaturalsize() self.wd = os.path.realpath(os.path.normcase(self.main_parameters[1])) self.xml_wd = os.path.realpath( os.path.normcase(self.main_parameters[1] + "/xml/")) self.profile_wd = os.path.realpath( os.path.normcase(self.main_parameters[1] + "/pymol/")) os.system('xset r off') # for keypress self.original_view = None
def __init__(self, app): parent = app.root self.parent = parent self.target_data = [None, 0, 0, 0, 30, 30, 30] self.offtarget_data = [None, 0, 0, 0, 30, 30, 30] self.build = False self.read_data() self.saved = True # box display settings self.target_box_is_on_display = True self.offtarget_box_is_on_display = True self.box_display_cylinder_size = 0.2 self.target_grid_center_selection_mode = IntVar() self.offtarget_grid_center_selection_mode = IntVar() # grid definition self.grid_spacing = 1.0 self.target_grid_center = [DoubleVar(), DoubleVar(), DoubleVar()] self.target_grid_center[0].set(self.target_data[1]) self.target_grid_center[1].set(self.target_data[2]) self.target_grid_center[2].set(self.target_data[3]) self.target_grid_size = [IntVar(), IntVar(), IntVar()] self.target_grid_size[0].set(self.target_data[4]) self.target_grid_size[1].set(self.target_data[5]) self.target_grid_size[2].set(self.target_data[6]) self.offtarget_grid_center = [DoubleVar(), DoubleVar(), DoubleVar()] self.offtarget_grid_center[0].set(self.offtarget_data[1]) self.offtarget_grid_center[1].set(self.offtarget_data[2]) self.offtarget_grid_center[2].set(self.offtarget_data[3]) self.offtarget_grid_size = [IntVar(), IntVar(), IntVar()] self.offtarget_grid_size[0].set(self.offtarget_data[4]) self.offtarget_grid_size[1].set(self.offtarget_data[5]) self.offtarget_grid_size[2].set(self.offtarget_data[6]) self.target_grid_center_selection_mode.set( GRID_CENTER_FROM_COORDINATES) self.offtarget_grid_center_selection_mode.set( GRID_CENTER_FROM_COORDINATES_B) # build main window self.main_window = Pmw.Dialog(parent, buttons=('Save Box Info', ), title='PyMOL AMDock Plugin', command=self.check_for_exit) self.main_window.withdraw() Pmw.setbusycursorattributes(self.main_window.component('hull')) self.status_bar = Label(self.main_window.interior(), relief='sunken', font='times 10', anchor='w', fg='green', bg='black') self.status_bar.pack(side=BOTTOM, fill='x', expand=1, padx=0, pady=0) if self.target_data[0] and self.offtarget_data[0]: self.main_window.geometry('550x640') else: self.main_window.geometry('550x400') # self.main_window.bind('<Return>', self.button_pressed) # the title self.title_label = tkinter.Label( self.main_window.interior(), text= 'PyMOL AMDock Plugin\n [ Assisted Molecular Docking For AutoDock4 and ' 'Autodock Vina ]\nFeel free to write us for any suggestions or errors ' 'you find\nhttps://groups.google.com/forum/#!forum/amdock\nThis ' 'plugin is based in Daniel Seeliger plugin.', background='navy', foreground='white', font='times 12') self.title_label.pack(expand=0, fill='both', padx=4, pady=4) # Target group self.target_group = Pmw.Group(self.main_window.interior(), tag_text='Target') self.target_group.pack(fill='both', expand=0, padx=10, pady=5) if not self.target_data[0]: self.target_group.collapse() # Off-Target group self.offtarget_group = Pmw.Group(self.main_window.interior(), tag_text='Off-Target') self.offtarget_group.pack(fill='both', expand=0, padx=10, pady=5) if not self.offtarget_data[0]: self.offtarget_group.collapse() # Target GRID DEFINITION self.target_grid_group = Pmw.Group(self.target_group.interior(), tag_text='Grid Dimensions') self.target_grid_group.pack(fill='both', expand=0, padx=10, pady=5) # Off-Target GRID DEFINITION self.offtarget_grid_group = Pmw.Group(self.offtarget_group.interior(), tag_text='Grid Dimensions') self.offtarget_grid_group.pack(fill='both', expand=0, padx=10, pady=5) # n grid points entries target self.target_size_x_frame = tkinter.Frame( self.target_grid_group.interior()) self.target_size_x_label = Label(self.target_size_x_frame, text='X:') self.target_size_x_location = Entry( self.target_size_x_frame, textvariable=self.target_grid_size[0], bg='black', fg='yellow', width=7) self.target_size_x_scrollbar = Scrollbar( self.target_size_x_frame, orient='horizontal', command=self.target_size_x_changed) self.target_size_x_scrollbar.set('0.5', '0.51') self.target_size_y_frame = tkinter.Frame( self.target_grid_group.interior()) self.target_size_y_label = Label(self.target_size_y_frame, text='Y:') self.target_size_y_location = Entry( self.target_size_y_frame, textvariable=self.target_grid_size[1], bg='black', fg='yellow', width=7) self.target_size_y_scrollbar = Scrollbar( self.target_size_y_frame, orient='horizontal', command=self.target_size_y_changed) self.target_size_y_scrollbar.set('0.5', '0.51') self.target_size_z_frame = tkinter.Frame( self.target_grid_group.interior()) self.target_size_z_label = Label(self.target_size_z_frame, text='Z:') self.target_size_z_location = Entry( self.target_size_z_frame, textvariable=self.target_grid_size[2], bg='black', fg='yellow', width=7) self.target_size_z_scrollbar = Scrollbar( self.target_size_z_frame, orient='horizontal', command=self.target_size_z_changed) self.target_size_z_scrollbar.set('0.5', '0.51') self.target_size_x_label.pack(side=LEFT) self.target_size_x_location.pack(side=LEFT) self.target_size_x_scrollbar.pack(side=LEFT) self.target_size_x_frame.pack(side=LEFT, padx=4, pady=1) self.target_size_y_label.pack(side=LEFT) self.target_size_y_location.pack(side=LEFT) self.target_size_y_scrollbar.pack(side=LEFT) self.target_size_y_frame.pack(side=LEFT, padx=4, pady=1) self.target_size_z_label.pack(side=LEFT) self.target_size_z_location.pack(side=LEFT) self.target_size_z_scrollbar.pack(side=LEFT) self.target_size_z_frame.pack(side=LEFT, padx=4, pady=1) Pmw.alignlabels([ self.target_size_x_label, self.target_size_y_label, self.target_size_z_label ]) Pmw.alignlabels([ self.target_size_x_location, self.target_size_y_location, self.target_size_z_location ]) # n grid points entries off-target self.offtarget_size_x_frame = tkinter.Frame( self.offtarget_grid_group.interior()) self.offtarget_size_x_label = Label(self.offtarget_size_x_frame, text='X:') self.offtarget_size_x_location = Entry( self.offtarget_size_x_frame, textvariable=self.offtarget_grid_size[0], bg='black', fg='yellow', width=7) self.offtarget_size_x_scrollbar = Scrollbar( self.offtarget_size_x_frame, orient='horizontal', command=self.offtarget_size_x_changed) self.offtarget_size_x_scrollbar.set('0.5', '0.51') self.offtarget_size_y_frame = tkinter.Frame( self.offtarget_grid_group.interior()) self.offtarget_size_y_label = Label(self.offtarget_size_y_frame, text='Y:') self.offtarget_size_y_location = Entry( self.offtarget_size_y_frame, textvariable=self.offtarget_grid_size[1], bg='black', fg='yellow', width=7) self.offtarget_size_y_scrollbar = Scrollbar( self.offtarget_size_y_frame, orient='horizontal', command=self.offtarget_size_y_changed) self.offtarget_size_y_scrollbar.set('0.5', '0.51') self.offtarget_size_z_frame = tkinter.Frame( self.offtarget_grid_group.interior()) self.offtarget_size_z_label = Label(self.offtarget_size_z_frame, text='Z:') self.offtarget_size_z_location = Entry( self.offtarget_size_z_frame, textvariable=self.offtarget_grid_size[2], bg='black', fg='yellow', width=7) self.offtarget_size_z_scrollbar = Scrollbar( self.offtarget_size_z_frame, orient='horizontal', command=self.offtarget_size_z_changed) self.offtarget_size_z_scrollbar.set('0.5', '0.51') self.offtarget_size_x_label.pack(side=LEFT) self.offtarget_size_x_location.pack(side=LEFT) self.offtarget_size_x_scrollbar.pack(side=LEFT) self.offtarget_size_x_frame.pack(side=LEFT, padx=4, pady=1) self.offtarget_size_y_label.pack(side=LEFT) self.offtarget_size_y_location.pack(side=LEFT) self.offtarget_size_y_scrollbar.pack(side=LEFT) self.offtarget_size_y_frame.pack(side=LEFT, padx=4, pady=1) self.offtarget_size_z_label.pack(side=LEFT) self.offtarget_size_z_location.pack(side=LEFT) self.offtarget_size_z_scrollbar.pack(side=LEFT) self.offtarget_size_z_frame.pack(side=LEFT, padx=4, pady=1) Pmw.alignlabels([ self.offtarget_size_x_label, self.offtarget_size_y_label, self.offtarget_size_z_label ]) Pmw.alignlabels([ self.offtarget_size_x_location, self.offtarget_size_y_location, self.offtarget_size_z_location ]) # target display option buttons self.target_display_button_box = Pmw.ButtonBox( self.target_group.interior(), padx=1, pady=1, orient='horizontal') self.target_display_button_box.add('Show Box', command=self.show_target_box) self.target_display_button_box.add('Hide Box', command=self.hide_target_box) self.target_display_button_box.add('Reset', command=self.reset_target) self.target_display_button_box.pack(side=TOP, expand=1, padx=3, pady=3) # off-target display option buttons self.offtarget_display_button_box = Pmw.ButtonBox( self.offtarget_group.interior(), padx=1, pady=1, orient='horizontal') self.offtarget_display_button_box.add('Show Box', command=self.show_offtarget_box) self.offtarget_display_button_box.add('Hide Box', command=self.hide_offtarget_box) self.offtarget_display_button_box.add('Reset', command=self.reset_offtarget) self.offtarget_display_button_box.pack(side=TOP, expand=1, padx=3, pady=3) self.target_grid_center_radiogroups = [] self.offtarget_grid_center_radiogroups = [] self.target_grid_center_radioframe = tkinter.Frame( self.target_group.interior()) self.target_grid_center_pymol_selection = Pmw.Group( self.target_grid_center_radioframe, tag_pyclass=tkinter.Radiobutton, tag_text='Calculate Grid Center by Selection', tag_value=GRID_CENTER_FROM_SELECTION, tag_variable=self.target_grid_center_selection_mode) self.target_grid_center_pymol_selection.pack(fill='x', expand=1, side=TOP) self.target_grid_center_radiogroups.append( self.target_grid_center_pymol_selection) self.target_grid_center_selection_user = Pmw.EntryField( self.target_grid_center_pymol_selection.interior(), labelpos='w', label_text='Selection', value='(all)', command=self.target_grid_center_from_selection_changed) self.target_grid_center_selection_user.pack(fill='x', padx=4, pady=1, expand=0) self.target_grid_center_coordinates = Pmw.Group( self.target_grid_center_radioframe, tag_pyclass=tkinter.Radiobutton, tag_text='Grid Center Coordinates', tag_value=GRID_CENTER_FROM_COORDINATES, tag_variable=self.target_grid_center_selection_mode) self.target_grid_center_coordinates.pack(fill='x', expand=1, side=TOP) self.target_grid_center_radiogroups.append( self.target_grid_center_coordinates) self.target_grid_center_radioframe.pack(padx=6, pady=6, expand='yes', fill='both') Pmw.aligngrouptags(self.target_grid_center_radiogroups) self.offtarget_grid_center_radioframe = tkinter.Frame( self.offtarget_group.interior()) self.offtarget_grid_center_pymol_selection = Pmw.Group( self.offtarget_grid_center_radioframe, tag_pyclass=tkinter.Radiobutton, tag_text='Calculate Grid Center by Selection', tag_value=GRID_CENTER_FROM_SELECTION_B, tag_variable=self.offtarget_grid_center_selection_mode) self.offtarget_grid_center_pymol_selection.pack(fill='x', expand=1, side=TOP) self.offtarget_grid_center_radiogroups.append( self.offtarget_grid_center_pymol_selection) self.offtarget_grid_center_selection_user = Pmw.EntryField( self.offtarget_grid_center_pymol_selection.interior(), labelpos='w', label_text='Selection', value='(all)', command=self.offtarget_grid_center_from_selection_changed) self.offtarget_grid_center_selection_user.pack(fill='x', padx=4, pady=1, expand=0) self.offtarget_grid_center_coordinates = Pmw.Group( self.offtarget_grid_center_radioframe, tag_pyclass=tkinter.Radiobutton, tag_text='Grid Center Coordinates', tag_value=GRID_CENTER_FROM_COORDINATES_B, tag_variable=self.offtarget_grid_center_selection_mode) self.offtarget_grid_center_coordinates.pack(fill='x', expand=1, side=TOP) self.offtarget_grid_center_radiogroups.append( self.offtarget_grid_center_coordinates) self.offtarget_grid_center_radioframe.pack(padx=6, pady=6, expand='yes', fill='both') Pmw.aligngrouptags(self.offtarget_grid_center_radiogroups) self.target_center_x_frame = tkinter.Frame( self.target_grid_center_coordinates.interior()) self.target_center_x_label = Label(self.target_center_x_frame, text='X:') self.target_center_x_location = Entry( self.target_center_x_frame, textvariable=self.target_grid_center[0], bg='black', fg='yellow', width=10) self.target_center_x_scrollbar = Scrollbar( self.target_center_x_frame, orient='horizontal', command=self.target_center_x_changed) self.target_center_x_scrollbar.set('0.5', '0.51') self.target_center_y_frame = tkinter.Frame( self.target_grid_center_coordinates.interior()) self.target_center_y_label = Label(self.target_center_y_frame, text='Y:') self.target_center_y_location = Entry( self.target_center_y_frame, textvariable=self.target_grid_center[1], bg='black', fg='yellow', width=10) self.target_center_y_scrollbar = Scrollbar( self.target_center_y_frame, orient='horizontal', command=self.target_center_y_changed) self.target_center_y_scrollbar.set('0.5', '0.51') self.target_center_z_frame = tkinter.Frame( self.target_grid_center_coordinates.interior()) self.target_center_z_label = Label(self.target_center_z_frame, text='Z:') self.target_center_z_location = Entry( self.target_center_z_frame, textvariable=self.target_grid_center[2], bg='black', fg='yellow', width=10) self.target_center_z_scrollbar = Scrollbar( self.target_center_z_frame, orient='horizontal', command=self.target_center_z_changed) self.target_center_z_scrollbar.set('0.5', '0.51') self.target_center_x_label.pack(side=LEFT) self.target_center_x_location.pack(side=LEFT) self.target_center_x_scrollbar.pack(side=LEFT) self.target_center_x_frame.pack(side=LEFT, padx=4, pady=1) self.target_center_y_label.pack(side=LEFT) self.target_center_y_location.pack(side=LEFT) self.target_center_y_scrollbar.pack(side=LEFT) self.target_center_y_frame.pack(side=LEFT, padx=4, pady=1) self.target_center_z_label.pack(side=LEFT) self.target_center_z_location.pack(side=LEFT) self.target_center_z_scrollbar.pack(side=LEFT) self.target_center_z_frame.pack(side=LEFT, padx=4, pady=1) self.offtarget_center_x_frame = tkinter.Frame( self.offtarget_grid_center_coordinates.interior()) self.offtarget_center_x_label = Label(self.offtarget_center_x_frame, text='X:') self.offtarget_center_x_location = Entry( self.offtarget_center_x_frame, textvariable=self.offtarget_grid_center[0], bg='black', fg='yellow', width=10) self.offtarget_center_x_scrollbar = Scrollbar( self.offtarget_center_x_frame, orient='horizontal', command=self.offtarget_center_x_changed) self.offtarget_center_x_scrollbar.set('0.5', '0.51') self.offtarget_center_y_frame = tkinter.Frame( self.offtarget_grid_center_coordinates.interior()) self.offtarget_center_y_label = Label(self.offtarget_center_y_frame, text='Y:') self.offtarget_center_y_location = Entry( self.offtarget_center_y_frame, textvariable=self.offtarget_grid_center[1], bg='black', fg='yellow', width=10) self.offtarget_center_y_scrollbar = Scrollbar( self.offtarget_center_y_frame, orient='horizontal', command=self.offtarget_center_y_changed) self.offtarget_center_y_scrollbar.set('0.5', '0.51') self.offtarget_center_z_frame = tkinter.Frame( self.offtarget_grid_center_coordinates.interior()) self.offtarget_center_z_label = Label(self.offtarget_center_z_frame, text='Z:') self.offtarget_center_z_location = Entry( self.offtarget_center_z_frame, textvariable=self.offtarget_grid_center[2], bg='black', fg='yellow', width=10) self.offtarget_center_z_scrollbar = Scrollbar( self.offtarget_center_z_frame, orient='horizontal', command=self.offtarget_center_z_changed) self.offtarget_center_z_scrollbar.set('0.5', '0.51') self.offtarget_center_x_label.pack(side=LEFT) self.offtarget_center_x_location.pack(side=LEFT) self.offtarget_center_x_scrollbar.pack(side=LEFT) self.offtarget_center_x_frame.pack(side=LEFT, padx=4, pady=1) self.offtarget_center_y_label.pack(side=LEFT) self.offtarget_center_y_location.pack(side=LEFT) self.offtarget_center_y_scrollbar.pack(side=LEFT) self.offtarget_center_y_frame.pack(side=LEFT, padx=4, pady=1) self.offtarget_center_z_label.pack(side=LEFT) self.offtarget_center_z_location.pack(side=LEFT) self.offtarget_center_z_scrollbar.pack(side=LEFT) self.offtarget_center_z_frame.pack(side=LEFT, padx=4, pady=1) self.show_target_box() self.main_window.show() self.status_bar.configure(text="Version: %s" % __version__)
def display_arrays(self): ma = self.main self.balloon = Pmw.Balloon(ma) self.menuBar = Pmw.MenuBar(ma, hull_borderwidth=1, hull_relief = 'raised', hotkeys=1, balloon = self.balloon) self.menuBar.pack(fill='x') self.menuBar.addmenu('File', 'Read, Cancel, Exit') self.menuBar.addmenuitem('File', 'command', 'Read this file with these arrays', label='Read', command= Command(self.btn_press, 'apply')) self.menuBar.addmenuitem('File', 'command', 'Do not read this file, Look for a new file', label='Change File', command= Command(self.btn_press, 'newfile')) self.menuBar.addmenuitem('File', 'command', 'Close without reading these arrays from this file', label='Cancel', command= Command(self.btn_press, 'cancel')) self.menuBar.addmenuitem('File', 'command', 'Read this file with these arrays, and exit', label='OK', command= Command(self.btn_press, 'ok')) # file buffer display self.f_win = Pmw.ScrolledText(ma,label_text=self.input_file, borderframe = 1,usehullsize=0, text_padx = 10, text_pady = 10, labelpos=NW, hull_width=650, hull_height=320) self.f_win.importfile(self.input_file) self.f_win.pack(side='top') # group name fr_0 = Frame(ma) fr_0.pack(side='top',anchor='w') fr_1 = Frame(fr_0) fr_1.pack(side='left', fill='x',anchor='w') fr1 = Frame(fr_1) Label(fr1, text='Group: ').pack(side='left') self.g_ent = Entry(fr1,width=20) self.g_ent.selection_clear() self.g_ent.insert(0,self.group) self.g_ent.pack(side='left',fill='x') fr1.pack(side='left',fill='x') fr_4 = Frame(fr_0) fr_4.pack(side='left', fill='x',anchor='w') self.file_type.set('<from column labels>') self.ftypes = Pmw.OptionMenu(fr_4, labelpos = 'w', label_text = ' Column File Types: ', menubutton_textvariable = self.file_type, menubutton_width = 22, items = ['<from column labels>', 'xmu','chi','rsp', 'chi.dat', 'feff.dat'], initialitem = '<from column labels>', command = Command(self.ftype_choice), ) # menubutton_width = 18) self.ftypes.pack(side='left',fill='x') # arrays name fr_2 = Frame(ma) fr_2.pack(side='top',anchor='w') fr2 = Frame(fr_2) Label(fr2, text='Arrays: ').pack(side='left') for i in range(self.array_disp): self.entr[i] = Entry(fr2, width=10) self.entr[i].selection_clear() self.entr[i].insert(0,self.array[i]) self.entr[i].pack(side='left') fr2.pack(side='top') # fr_3 = Frame(ma) bbox = Pmw.ButtonBox(fr_3) bbox.pack(side='left',fill='both', expand=1) b_ok= bbox.add('OK', command = Command(self.btn_press,'ok')) b_rd= bbox.add('Read', command = Command(self.btn_press,'apply')) b_ca= bbox.add('Done', command = Command(self.btn_press,'cancel')) b_nf=bbox.add('Change File', command = Command(self.btn_press,'newfile')) bbox.setdefault('Read') bbox.alignbuttons() self.balloon.bind(b_ok, '', 'Read these arrays from this file and exit') self.balloon.bind(b_rd, '', 'Read these arrays from this file') self.balloon.bind(b_ca, '', 'Close without reading these arrays from this file') self.balloon.bind(b_nf, '', 'Do not read these arrays, Look for a new file') fr_3.pack() self.createMsgWin(ma)
def __init__(self, parent=None, **kw): # Define the megawidget options. optiondefs = () self.defineoptions(kw, optiondefs) # Initialise the base class (after defining the options). Pmw.MegaWidget.__init__(self, parent) # Create the contents. top = self.interior() panes = Pmw.PanedWidget(top, orient = 'horizontal') panes.pack(fill = 'both', expand = 1) panes.add('widgetlist') self._widgetlist = Pmw.ScrolledListBox(panes.pane('widgetlist'), selectioncommand = Pmw.busycallback(self.startDemo), label_text = 'Select a widget:', labelpos = 'nw', vscrollmode = 'dynamic', hscrollmode = 'none', listbox_exportselection = 0) self._widgetlist.pack(fill = 'both', expand = 1, padx = 8) panes.add('info') self._status = Tkinter.Label(panes.pane('info')) self._status.pack(padx = 8, anchor = 'w') self._example = Tkinter.Frame(panes.pane('info'), borderwidth = 2, relief = 'sunken', background = 'white') self._example.pack(fill = 'both', expand = 1, padx = 8) self.buttonBox = Pmw.ButtonBox(top) self.buttonBox.pack(fill = 'x') # Add the buttons and make them all the same width. self._traceText = 'Trace tk calls' self._stopTraceText = 'Stop trace' self.buttonBox.add('Trace', text = self._traceText, command = self.trace) self.buttonBox.add('Code', text = 'Show code', command = self.showCode) self.buttonBox.add('Exit', text = 'Exit', command = sys.exit) self.buttonBox.alignbuttons() # Create the window to display the python code. self.codeWindow = Pmw.TextDialog(parent, title = 'Python source', buttons = ('Dismiss',), scrolledtext_labelpos = 'n', label_text = 'Source') self.codeWindow.withdraw() self.codeWindow.insert('end', '') self.demoName = None self._loadDemos() # Check keywords and initialise options. self.initialiseoptions()
def __init__(self, parent, withTabs=1): # Repeat random number sequence for each run. self.rand = 12345 # Default demo is to display a tabbed notebook. self.withTabs = withTabs # Create a frame to put everything in self.mainframe = Tkinter.Frame(parent) self.mainframe.pack(fill='both', expand=1) # Find current default colors button = Tkinter.Button() defaultbg = button.cget('background') defaultfg = button.cget('foreground') button.destroy() # Create the list of colors to cycle through self.colorList = [] self.colorList.append((defaultbg, defaultfg)) self.colorIndex = 0 for color in Pmw.Color.spectrum(6, 1.5, 1.0, 1.0, 1): bg = Pmw.Color.changebrightness(self.mainframe, color, 0.85) self.colorList.append((bg, 'black')) bg = Pmw.Color.changebrightness(self.mainframe, color, 0.55) self.colorList.append((bg, 'white')) # Set the color to the current default Pmw.Color.changecolor(self.mainframe, defaultbg, foreground=defaultfg) defaultPalette = Pmw.Color.getdefaultpalette(self.mainframe) Pmw.Color.setscheme(self.mainframe, defaultbg, foreground=defaultfg) # Create the notebook, but don't pack it yet. if self.withTabs: tabpos = 'n' else: tabpos = None self.notebook = Pmw.NoteBook( self.mainframe, tabpos=tabpos, createcommand=PrintOne('Create'), lowercommand=PrintOne('Lower'), raisecommand=PrintOne('Raise'), hull_width=300, hull_height=200, ) # Create a buttonbox to configure the notebook and pack it first. buttonbox = Pmw.ButtonBox(self.mainframe) buttonbox.pack(side='bottom', fill='x') # Add some buttons to the buttonbox to configure the notebook. buttonbox.add('Insert\npage', command=self.insertpage) buttonbox.add('Delete\npage', command=self.deletepage) buttonbox.add('Add\nbutton', command=self.addbutton) buttonbox.add('Change\ncolor', command=self.changecolor) buttonbox.add('Natural\nsize', command=self.notebook.setnaturalsize) if not self.withTabs: # Create the selection widget to select the page in the notebook. self.optionmenu = Pmw.OptionMenu(self.mainframe, menubutton_width=10, command=self.notebook.selectpage) self.optionmenu.pack(side='left', padx=10) # Pack the notebook last so that the buttonbox does not disappear # when the window is made smaller. self.notebook.pack(fill='both', expand=1, padx=5, pady=5) # Populate some pages of the notebook. page = self.notebook.add('tmp') self.notebook.delete('tmp') page = self.notebook.add('Appearance') if self.withTabs: self.notebook.tab('Appearance').focus_set() button = Tkinter.Button(page, text='Welcome\nto\nthe\nAppearance\npage') button.pack(expand=1) page = self.notebook.add('Fonts') button = Tkinter.Button( page, text='This is a very very very very wide Fonts page') button.pack(expand=1) page = self.notebook.insert('Applications', before='Fonts') button = Tkinter.Button(page, text='This is the Applications page') button.pack(expand=1) # Initialise the first page and the initial colour. if not self.withTabs: self.optionmenu.setitems(self.notebook.pagenames()) apply(Pmw.Color.setscheme, (self.mainframe, ), defaultPalette) self.pageCounter = 0
def __init__(self, parent, filtus, notebook): Tkinter.Frame.__init__(self, parent) self.filtus = filtus self.db = None self.columnconfigure(0, weight=1) self.rowconfigure(3, weight=1) Tkinter.Label(self, text="Add samples to database", font=filtus.titlefont, anchor='c').grid(sticky='news', padx=10, pady=(15, 10)) self.browser = DBbrowser(self, filtus, label="Load database:", updates=self.updateStuff) self.browser.grid(sticky='news', padx=10) Tkinter.Frame(self, height=2, borderwidth=2, relief="sunken").grid(padx=10, pady=10, sticky="new") filenames = [VF.shortName for VF in filtus.files] self.lists = TwoListWidget(self, filtus=filtus, lefttoptext="Available samples: %d" % len(filenames), items=filenames) self.lists.grid(sticky='news', padx=10, pady=0) ####### OUTPUT Tkinter.Frame(self, height=2, borderwidth=2, relief="sunken").grid(padx=10, pady=10, sticky="new") save_interior = Tkinter.Frame(self) save_interior.columnconfigure(0, weight=1) self.save_browser = FiltusWidgets.FileBrowser( save_interior, filtus=filtus, label="Output database file name:", checkbutton=False, labelpos='nw', browsesticky='se', entryfield_entry_width=20, browsetitle="") self.save_browser.browsebutton.configure(command=self._browseSave) self.save_browser.entryfield.configure(command=None) self.formatSelect = Pmw.RadioSelect( save_interior, buttontype="radiobutton", pady=0, labelpos="nw", labelmargin=0, label_text="Format:" ) #, hull_borderwidth = 2, hull_relief = 'ridge') self.formatSelect.add("Simple") self.formatSelect.add("Extended") self.formatSelect.invoke("Simple") self.save_browser.grid(sticky='news', padx=(10, 25), pady=(5, 10)) self.formatSelect.grid(row=0, column=1, sticky='e', padx=10, pady=0) save_interior.grid(sticky='news', padx=10, pady=0) ####### Tkinter.Frame(self, height=2, borderwidth=3, relief="raised").grid(sticky='ew', pady=15) self.lowerButtons = Pmw.ButtonBox(self, padx=50) self.lowerButtons.add('createButt', text="Add to database", command=self.addSamples) self.lowerButtons.add('cancelButt', text="Cancel", command=notebook.deactivate) self.lowerButtons.grid(sticky='news', pady=(0, 10))
def __init__(self, parent, sequences, modification_tags): self.parent = parent self.sequences = sequences self.modification_tags = modification_tags self.expcond_top = Tkinter.Toplevel(self.parent) self.expcond_top.title('Experimental Condition Suggestions') self.expcond_top.wm_transient(self.parent) self.expcond_top.top_width = 800 self.expcond_top.top_height = 500 geometry_string = "%dx%d%+d%+d" % ( self.expcond_top.top_width, self.expcond_top.top_height, 100, 100 ) # width,height,x-offset,y-offset self.expcond_top.geometry(geometry_string) # frame1 is on the left self.frame1 = Tkinter.Frame(self.expcond_top, relief='raised', bd=2) self.frame1a = Tkinter.Frame(self.frame1, relief='groove', bd=2) self.frame1b = Tkinter.Frame(self.frame1, relief='groove', bd=2) self.frame1c = Tkinter.Frame(self.frame1, relief='groove', bd=2) self.frame2 = Tkinter.Frame(self.expcond_top, relief='raised', bd=2) # available reagents self.reactions_dict = {} filename = './Tools/MassSpectrometry/reactions_dict.pkl' if os.path.exists(filename): reactions_file = open(filename, 'rb') self.reactions_dict = pickle.load(reactions_file) reactions_file.close() else: print 'no reactions file %s found' % (filename) # put the available reagents into a scrolled frame self.reagents_sframe = Pmw.ScrolledFrame(self.frame1a, usehullsize=1, hull_width=200, hull_height=200) rsframe_interior = self.reagents_sframe.interior() # frame1a has available reagents (radiobutton) self.reagents_radio = Pmw.RadioSelect( rsframe_interior, buttontype='radiobutton', orient='vertical', labelpos='nw', label_text='Available\n Reagents', selectmode='single') self.reagents_radio.pack(side='top', expand=0, fill='none') self.reagents_sframe.pack(side='top', expand=1, fill='both') keys = self.reactions_dict.keys() keys.sort() keys.reverse() for key in keys: self.reagents_radio.add(key) self.reagents_radio.invoke(keys[0]) # available proteases self.proteases_dict = {} filename = './Tools/MassSpectrometry/protease_dict.pkl' if os.path.exists(filename): protease_file = open(filename, 'rb') self.proteases_dict = pickle.load(protease_file) protease_file.close() else: print 'no protease file %s found' % (filename) self.protease_sframe = Pmw.ScrolledFrame(self.frame1b, usehullsize=1, hull_width=200, hull_height=200) psframe_interior = self.protease_sframe.interior() self.protease_radio = Pmw.RadioSelect( psframe_interior, buttontype='checkbutton', orient='vertical', labelpos='nw', label_text='Available\n Proteases', selectmode='multiple') self.protease_radio.pack(side='top', expand=0, fill='none') self.protease_sframe.pack(side='top', expand=1, fill='both') keys = self.proteases_dict.keys() keys.sort() keys.reverse() for key in keys: self.protease_radio.add(key) self.protease_radio.invoke(keys[0]) # frame1c has the missed cut sites counter self.missed_cut_sites_counter = FunctionalPmwCounter.functional_pmw_counter( self.frame1c, 'n', 'Missed cut sites tolerated:', 2, { 'validator': 'integer', 'min': 0, 'max': 99 }, 'integer', 1) self.missed_cut_sites_counter.pack(side='top', expand=1, fill='both') # frame2 gets the report and buttonbox self.report_textbox = Pmw.ScrolledText(self.frame2, usehullsize=1, hull_width=400, hull_height=350) self.report_textbox.pack(side='top', fill='both', expand=1) self.report_text = self.report_textbox.component('text') self.buttonBox = Pmw.ButtonBox(self.frame2) self.buttonBox.add('Calculate', command=self.calculate_report) self.buttonBox.add('Cancel', command=self.cancel_calculation) self.buttonBox.alignbuttons() self.buttonBox.pack(side='top', fill='x', expand=0) self.frame1a.pack(side='top', expand=1, fill='both') self.frame1b.pack(side='top', expand=1, fill='both') self.frame1c.pack(side='top', expand=1, fill='both') self.frame1.pack(side='left', expand=0, fill='y') self.frame2.pack(side='left', expand=1, fill='both') self.old_stdout = None
def __init__(self, parent, filtus, notebook): Tkinter.Frame.__init__(self, parent) self.filtus = filtus self.db = None self.results = None self.columnconfigure(0, weight=1) self.rowconfigure(3, weight=1) Tkinter.Label(self, text="Search database", font=filtus.titlefont, anchor='c').grid(sticky='news', padx=10, pady=(15, 10)) self.browser = DBbrowser(self, filtus, label="Enter database file name") self.browser.grid(sticky='news', padx=10, pady=0) Tkinter.Frame(self, height=2, borderwidth=2, relief="sunken").grid(padx=10, pady=10, sticky="new") search_frame = Tkinter.Frame(self) search_frame.columnconfigure(1, weight=1) search_frame.rowconfigure(1, weight=1) sgroup = Pmw.Group(search_frame, tag_text="Query") search_int = sgroup.interior() self.chrom = Pmw.EntryField(search_int, label_text="Chromosome:", labelpos='w', entry_width=9, labelmargin=5) self.pos = Pmw.EntryField(search_int, label_text="Position:", labelpos='w', entry_width=9, labelmargin=5) Pmw.alignlabels([self.chrom, self.pos]) self.chrom.grid(padx=(5, 10), pady=(10, 5)) self.pos.grid(padx=(5, 10), pady=5) sgroup.grid(sticky='new', padx=(0, 10), pady=12) self.searchButt = Tkinter.Button(search_frame, text="Search", command=self.doSearch) self.searchButt.grid(row=1, column=0, padx=5, pady=20, sticky='n') self.resultWindow = Pmw.ScrolledText(search_frame, borderframe=1, text_padx=2, scrollmargin=2, hscrollmode='dynamic', label_text="Results", labelpos="nw", text_width=10, text_height=1, text_wrap='none', text_font=filtus.monofont) FiltusWidgets.makeReadOnly(self.resultWindow.component('text')) self.resultWindow.grid(row=0, column=1, sticky='news', padx=10, pady=0, rowspan=2) search_frame.grid(sticky='news', padx=10, pady=(0, 10)) Tkinter.Frame(self, height=2, borderwidth=3, relief="raised").grid(sticky='ew', pady=15) self.lowerButtons = Pmw.ButtonBox(self, padx=50) self.lowerButtons.add('createButt', text="Save result", command=self.save) self.lowerButtons.add('cancelButt', text="Cancel", command=notebook.deactivate) self.lowerButtons.grid(sticky='news', pady=(0, 10))
def __init__(self, parent): # Create the ScrolledListBox. self.box = Pmw.ScrolledListBox(parent, items=('Sydney', 'Melbourne', 'Brisbane'), labelpos='nw', label_text='Cities', listbox_height = 6, selectioncommand=self.selectionCommand, dblclickcommand=self.defCmd, usehullsize = 1, hull_width = 200, hull_height = 200, ) # Create a group widget to contain the scrollmode options. w = Pmw.Group(parent, tag_text='Scroll mode') w.pack(side = 'bottom', padx = 5, pady = 5) hmode = Pmw.OptionMenu(w.interior(), labelpos = 'w', label_text = 'Horizontal:', items = ['none', 'static', 'dynamic'], command = self.sethscrollmode, menubutton_width = 8, ) hmode.pack(side = 'top', padx = 5, pady = 5) hmode.invoke('dynamic') vmode = Pmw.OptionMenu(w.interior(), labelpos = 'w', label_text = 'Vertical:', items = ['none', 'static', 'dynamic'], command = self.setvscrollmode, menubutton_width = 8, ) vmode.pack(side = 'top', padx = 5, pady = 5) vmode.invoke('dynamic') buttonBox = Pmw.ButtonBox(parent) buttonBox.pack(side = 'bottom') buttonBox.add('yview', text = 'Show\nyview', command = self.showYView) buttonBox.add('scroll', text = 'Page\ndown', command = self.pageDown) buttonBox.add('center', text = 'Center', command = self.centerPage) # Pack this last so that the buttons do not get shrunk when # the window is resized. self.box.pack(fill = 'both', expand = 1, padx = 5, pady = 5) # Do this after packing the scrolled list box, so that the # window does not resize as soon as it appears (because # alignlabels has to do an update_idletasks). Pmw.alignlabels((hmode, vmode)) # Add some more entries to the listbox. items = ('Andamooka', 'Coober Pedy', 'Innamincka', 'Oodnadatta') self.box.setlist(items) self.box.insert(2, 'Wagga Wagga', 'Perth', 'London') self.box.insert('end', 'Darwin', 'Auckland', 'New York') index = list(self.box.get(0, 'end')).index('London') self.box.delete(index) self.box.delete(7, 8) self.box.insert('end', 'Bulli', 'Alice Springs', 'Woy Woy') self.box.insert('end', 'Wallumburrawang', 'Willandra Billabong')
def __init__(self, parent, pCmdArgs=None): pCmd = '/homes/jschamba/tof/pcan/pcanloop' if pCmdArgs: shell = pCmd + ' ' + pCmdArgs else: shell = pCmd args = string.split(shell) #print "shell", shell, "args", args self.setDefaultVals() self.tk = parent mainFrame = Frame(parent) run_type = Pmw.OptionMenu(mainFrame, labelpos=W, label_text='Run Type:', menubutton_textvariable=self.runTypeNum, items=self.runTypeOptions) user_name = Pmw.OptionMenu(mainFrame, labelpos=W, label_text='Operator:', menubutton_textvariable=self.userNum, items=self.userOptions) self.current_time = Pmw.EntryField(mainFrame, labelpos=W, label_text="current time:", entry_state="readonly", value=time.strftime( "%a, %d %b %Y %H:%M:%S", time.localtime())) self.run_number = Pmw.EntryField(mainFrame, labelpos=W, label_text="run number:", modifiedcommand=self.fileChanged, entry_textvariable=self.runNum) self.start_time = Pmw.EntryField(mainFrame, labelpos=W, label_text="start time:", entry_state="readonly", value=time.strftime( "%a, %d %b %Y %H:%M:%S", time.localtime(self.startTime))) self.run_time = Pmw.EntryField( mainFrame, labelpos=W, label_text="run time:", entry_state="readonly", ) if (self.runStatus == 2): self.run_time.setvalue(int(time.time()) - self.startTime) else: self.run_time.setvalue(self.stopTime - self.startTime) self.data_dir = Pmw.EntryField(mainFrame, labelpos=W, label_text="data directory:", modifiedcommand=self.fileChanged, entry_textvariable=self.dataDir) self.data_file = Pmw.EntryField(mainFrame, labelpos=W, label_text="data file:", entry_state="readonly", value=self.dataFile) self.log_dir = Pmw.EntryField(mainFrame, labelpos=W, label_text="log directory:", modifiedcommand=self.fileChanged, entry_textvariable=self.logDir) self.log_file = Pmw.EntryField(mainFrame, labelpos=W, label_text="log file:", entry_state="readonly", value=self.logFile) allwdgs = [ run_type, user_name, self.current_time, self.run_number, self.start_time, self.run_time, self.data_dir, self.data_file, self.log_dir, self.log_file ] for wdg in allwdgs: wdg.pack(fill=X, expand=1, padx=10, pady=2) Pmw.alignlabels(allwdgs) bb = Pmw.ButtonBox(mainFrame, labelpos=W, label_text='Run', frame_borderwidth=2, frame_relief='groove') bb.pack(padx=10, pady=10) bb.add('Start', command=self.runStart) bb.add('Stop', command=self.runStop) bb.alignbuttons() self.cmdEntry = StringVar() entryBox = Pmw.EntryField(mainFrame, labelpos=W, label_text="CAN Command Entry:", command=self.exeCommand, entry_textvariable=self.cmdEntry) entryBox.pack(fill=X, expand=YES) self.textBox = Pmw.ScrolledText(mainFrame) self.textBox.pack(fill=BOTH, expand=YES) mainFrame.pack(fill=BOTH, expand=YES) self.pid, self.fromchild, self.tochild = spawn(pCmd, args) tkinter.createfilehandler(self.fromchild, READABLE, self.outputhandler) parent.after(1000, self.secondElapsed)
def __init__(self, app): #Initialize the rotamers for the SC rotator self.setupAAtypes() #Find Probe and Reduce Executables findExecutables() #Start a thread to calculate dots when doing SC rotation self.dotThread = ThreadDots(self.dotQueue) self.dotThread.start() #Get the parent window for our plugin parent = app.root self.parent = parent # Create the dialog. self.dialog = Pmw.Dialog(parent, buttons=('Close', 'About'), title='Protein Interaction Viewer', command=self.execute) self.dialog.withdraw() #self.dialog.protocol('WM_TAKE_FOCUS',self.updateSels) self.dialog.bind('<FocusIn>', self.updateSels) #define comboBoxes that will need to be updated when selections are updated self.cBoxes = [] # Set up the main page self.notebook = Pmw.NoteBook(self.dialog.interior()) self.notebook.pack(fill='both', expand=1, padx=1, pady=1) #Add Hydrogen page ######################################## page = self.notebook.add('Edit H') group = Pmw.Group(page, tag_text='Hydrogen Options') group.pack(fill='both', expand=1, padx=1, pady=5) self.h_sel = Pmw.ScrolledListBox( group.interior(), label_text='Selection: ', labelpos='nw', #scrolledlist_items = self.getSels(), #dropdown = 0, listbox_height=10) #self.cBoxes.append(self.h_sel) self.h_newSel = Pmw.EntryField(group.interior(), labelpos='w', label_text='New Object Name') self.h_buttons = Pmw.ButtonBox(group.interior()) self.h_buttons.add('Clear H', command=self.clearH) self.h_buttons.add('Add H', command=self.addH) self.replVar = IntVar() self.replaceCheck = Tkinter.Checkbutton(self.h_buttons.interior(), text='Replace', variable=self.replVar) self.replaceCheck.grid(row=0, column=4) for widget in (self.h_sel, self.h_newSel, self.h_buttons): widget.pack(fill='x', padx=1, pady=1) ################################################## #Add Dots page page = self.notebook.add('Load Dots') group = Pmw.Group(page, tag_text='Load Dots') group.pack(fill='both', expand=1, padx=1, pady=5) frame = Frame(group.interior()) frame.pack(fill='x') self.d_sel1 = Pmw.ComboBox( frame, label_text='Sel1: ', labelpos='nw', #scrolledlist_items = self.getSels(), dropdown=0, listbox_height=10) self.cBoxes.append(self.d_sel1) self.d_sel2 = Pmw.ComboBox( frame, label_text='Sel2: ', labelpos='nw', #scrolledlist_items = self.getSels(), dropdown=0, listbox_height=10) self.cBoxes.append(self.d_sel2) self.d_sel1.pack(side=LEFT, padx=10) self.d_sel2.pack(side=LEFT, padx=10) self.d_name = Pmw.EntryField(group.interior(), labelpos='w', label_text='Dots Name', value='dots') self.d_params = Pmw.EntryField(group.interior(), labelpos='w', label_text='Additional Parameters') self.d_buttons = Pmw.ButtonBox(group.interior()) self.d_buttons.add('Load Dots', command=self.loadDotsButton) optionFrame = Frame(group.interior()) self.d_selfVar = IntVar() self.d_selfCheck = Tkinter.Checkbutton(optionFrame, text="Self", variable=self.d_selfVar) self.dotSizeEntry = Pmw.EntryField(optionFrame, labelpos='w', label_text="Dot Size: ", value=0, validate='real') self.dotSizeEntry.component("entry").configure(width=5) self.lineSizeEntry = Pmw.EntryField(optionFrame, labelpos='w', label_text="Line Size: ", value=1, validate='real') self.lineSizeEntry.component("entry").configure(width=5) self.d_name.pack(fill='x') self.d_params.pack(fill='x') optionFrame.pack(fill='x') self.d_selfCheck.pack(side=LEFT, padx=10) self.dotSizeEntry.pack(side=LEFT, padx=10) self.lineSizeEntry.pack(side=LEFT, padx=10) self.d_buttons.pack() ######################################################### #Add SC rotator page page = self.notebook.add('Side-chain Rotator') group = Pmw.Group(page, tag_text='Side-chain Rotator') group.pack(fill='both', expand=1, padx=1, pady=5) frame = Frame(group.interior()) frame.pack(fill='x') self.resLabel = Tkinter.Label(frame, text="") self.resLabel.grid(row=0, column=2) self.dihVar = [] self.dihScale = [] for i in range(4): self.dihVar.append(IntVar()) self.dihScale.append( Scale(frame, from_=-180, to=180, highlightthickness=0, sliderlength=20, resolution=1, length=130, variable=self.dihVar[i], command=lambda x, index=i: self.changeDihedral(index, x), orient=HORIZONTAL, label="Chi " + str(i))) self.dihScale[i].grid(row=i + 1, column=2) self.dihScale[i].bind("<ButtonRelease-1>", self.rotRelease) self.dihScale[i].bind('<KeyRelease>', self.rotRelease) self.dihScale[i].grid_remove() self.rotBox = Pmw.ScrolledListBox(frame, label_text='Rotamer: ', labelpos='nw', listbox_height=15, selectioncommand=self.rotBoxCommand) self.rotBox.grid(rowspan=4, row=1, column=1) self.showDotsCheckVar = IntVar() self.showDotsCheck = Tkinter.Checkbutton( frame, text="Show Dots", variable=self.showDotsCheckVar, command=self.dotCheckCB) self.showDotsCheck.grid(row=5, column=1) self.notebook.setnaturalsize() #get the window to open next to pymol and not on top of it #first get screen size so we don't go off the screen swidth = parent.winfo_screenwidth() pwidth = parent.winfo_width() rootx = parent.winfo_rootx() dwidth = self.dialog.winfo_width() xpos = min(rootx + pwidth + 8, swidth - dwidth) self.dialog.geometry("+%d+%d" % (xpos, 0)) self.dialog.show()
u.append(x / (2.0 * npoints / 3)) else: u.append(float(npoints - x) / (npoints / 3)) init() g = Pmw.Blt.Graph(master) g.pack(expand=1, fill='both') curvename = 'string' g.line_create(curvename, xdata=tuple(vector_x), ydata=tuple(u), pixels=7, smooth='natural') # smooth the curve by splines g.element_bind("string", "<ButtonPress>", mouseDown) g.element_bind("string", "<ButtonRelease>", mouseUp) g.yaxis_configure(min=-1, max=1) g.configure(title='Hello world of waves', width=250, height=200) buttons = Pmw.ButtonBox(master, labelpos='n', label_text='Options') buttons.pack(fill='x', expand=0, padx=10, pady=10) buttons.add('Simulate', command=run) buttons.add('Step', command=step) buttons.add('Zero', command=zero) buttons.add('Quit', command=master.quit) master.mainloop()
def Vertical_Transmission(self): self.hide() vTFrame = Toplevel() vTFrame.title("SIR WITH VERTICAL TRANSMISSION") vTFrame.geometry("700x800") # self.top.transient(self) g = Pmw.Blt.Graph(vTFrame) g.pack(expand=1, fill="both") E = zeros([2, 1]) A = zeros([2, 2]) C = zeros([2, 1]) A = zeros([2, 2]) B = zeros([2, 2]) E = zeros([2, 1]) C = zeros([2, 1]) # -------------------------------------------------------------------------------------------------------------------------------------------------------- sus = Pmw.EntryField( vTFrame, labelpos="w", value="0.0", label_text="Initial Susceptible", validate={"validator": "real"}, ) sus.pack(expand=1, padx=5, pady=5) Infec = Pmw.EntryField( vTFrame, labelpos="w", value="0.0", label_text="Initial Infective Io:", validate={"validator": "real"}, ) Infec.pack(expand=1, padx=5, pady=5) contact = Pmw.EntryField( vTFrame, labelpos="w", value="0.0", label_text="Contact Rate - k ", validate={"validator": "real"}, ) contact.pack(expand=1, padx=5, pady=5) Removal = Pmw.EntryField( vTFrame, labelpos="w", value="0.0", label_text=" Removal Rate ", validate={"validator": "real"}, ) Removal.pack(expand=1, padx=10, pady=5) time_interval = Pmw.EntryField( vTFrame, labelpos="w", value="0", label_text=" Time Interval", validate={"validator": "numeric"}, ) time_interval.pack(expand=1, padx=5, pady=5) birth_rate = Pmw.EntryField( vTFrame, labelpos="w", value="0.0", label_text=" Birth Rate - b :", validate={"validator": "real"}, ) birth_rate.pack(expand=1, padx=10, pady=5) immunity1 = Pmw.EntryField( vTFrame, labelpos="w", value="0.00", label_text=" Immunity Rate ", validate={"validator": "real"}, ) immunity1.pack(expand=1, padx=10, pady=10) infected_rate = Pmw.EntryField( vTFrame, labelpos="w", value="0.0", label_text="Infected Birth - Ib", validate={"validator": "real"}, ) infected_rate.pack(expand=1, padx=10, pady=5) vertical = Pmw.EntryField( vTFrame, labelpos="w", value="0.00", label_text=" Vertical Rate - v", validate={"validator": "real"}, ) vertical.pack(expand=1, padx=10, pady=10) probability = Pmw.EntryField( vTFrame, labelpos="w", value="0.00", label_text="Probability loss -p", validate={"validator": "real"}, ) probability.pack(expand=1, padx=10, pady=10) # -------------------------------------------------------------------------------------------------------------------------------------------------------- # self.top.transient(self) # self.wButton.config(state='disabled') def retrive(): k1 = contact.get() k = float(k1) ggamma = float(Removal.get()) N = int(time_interval.get()) s0 = float(sus.get()) I0 = float(Infec.get()) m = float(immunity1.get()) v = float(vertical.get()) b_prime = float(infected_rate.get()) b = float(birth_rate.get()) p = float(probability.get()) A[0][0] = 0 A[0][1] = -k A[1][0] = k A[1][1] = 0 B[0][0] = (m - 1) * b + (p * b_prime + ggamma) B[0][1] = 0 B[1][0] = 0 B[1][1] = 0 E[0][0] = -b - ggamma E[1][0] = p * b_prime - v C[0][0] = b * (1 - m) + (ggamma) C[1][0] = 0 def f1(s1, I1): s_dot = ( s1 * E[0][0] + A[0][0] * (s1 ** 2) + A[0][1] * s1 * I1 + B[0][0] * s1 + B[0][1] * I1 + C[0][0] ) return s_dot def f2(s1, I1): I_dot = ( I1 * E[1][0] + A[1][1] * (I1 ** 2) + A[1][0] * s1 * I1 + B[1][0] * s1 + B[1][1] * I1 + C[1][0] ) return I_dot # =========RATE OF CHANGE OF THE MODEL WITH RESPECT TO TIME AND DECLARATON OF CONSTANTS================================== t = arange(0, N, 0.02455) s1 = zeros(len(t)) I1 = zeros(len(t)) s1[0] = s0 I1[0] = I0 h = 0.01 # ==========ITERATION FOR A GIVEN TIME INTERVAL========================= for n in range(len(t) - 1): s1[n + 1] = s1[n] + h * (f1(s1[n], I1[n])) I1[n + 1] = I1[n] + h * (f2(s1[n], I1[n])) x_ = tuple(t) y_ = tuple(s1) z_ = tuple(I1) g.configure( title="Susceptible and Infectives against time for SIR with Vertical Transmission" ) g.line_create( "S(t) Vs t", xdata=x_, color="red", ydata=y_, linewidth=2, symbol="" ) g.line_create( "I(t) Vs t", xdata=x_, color="orange", ydata=z_, linewidth=2, symbol="" ) def postscript(): g.postscript_output(fileName="HelloUser1.ps", decorations="no") def newFile(): for name in g.element_names(): g.element_delete(name) contact.setentry("") Removal.setentry("") time_interval.setentry("") Infec.setentry("") sus.setentry("") immunity1.setentry("") birth_rate.setentry("") vertical.setentry("") infected_rate.setentry("") probability.setentry("") # -------------------------------------------------------------------------------------------------------------------------------------------------------- buttons = Pmw.ButtonBox(vTFrame, labelpos="w", label_text="Options") # buttons = Pmw.ButtonBox(self, labelpos='w', label_text='Options') buttons.pack(fill="both", expand=1, padx=10, pady=10) buttons.add("GRID", bg="green", command=g.grid_toggle) buttons.add("PLOT", bg="green", command=retrive) buttons.add("CLEAR", bg="green", command=newFile) buttons.add("SAVE", bg="green", command=postscript) handler = lambda: self.onCloseOtherFrame2(vTFrame) buttons.add("QUIT", bg="red", command=handler)