Thursday, September 3, 2015

Python: Tkinter (10)

Abstract: A GUI of ComboBox window

The GUI:


The script:
# -*- coding: utf-8 -*-
"""
Created on Thu Sep  3 10:48:41 2015

@author: yuan
"""

   
from Tkinter import *
import Pmw

class myWin:
    def __init__(self, par):
        #
        self.par=par
       
        #create toplevel window
        self.root = Tk()
        self.root.title('ComboBox 1')
       
        #add label
        self.label1 = Label(self.root, text='Choose References', relief='sunken',
                       padx=40, pady=10)
       
        #context of combobox
        species = ("mouse", "human", "rat", "dog", "arabidopsis", "worm")
        species=sorted(species)
        self.cb_specie=self.ComboBox(self.root, species, 'Species', 2)
        #
        mol=['RNA','DNA','cDNA']
        self.cb_type=self.ComboBox(self.root, mol, 'Type', 0)
        #
        fa_file=['sss.fa','DNA.fa','cDNA.fa']
        self.cb_fa_file=self.ComboBox(self.root, fa_file, 'File', 0)
       
        #buttons
        f=self.Dibuttons(self.root,self.save_input)
      
        #layout
        layout=[ [self.label1],
                [self.cb_specie, self.cb_type],
                [self.cb_fa_file],
                [f] ]
        self.grid_layout(layout)

        #
        self.root.mainloop()

    def ComboBox(self,win, items,label='ComboBox',default=0):
        cb = Pmw.ComboBox(win, label_text=label, labelpos='wn',
                          dropdown=1, scrolledlist_items=items )
        cb.selectitem(default)

        return cb       
       
    def Dibuttons(self, win, FUN_save):
        f=Frame(win, borderwidth=2)
        #button close
        self.b_save=Button(f, text='Save',command=FUN_save )
        self.b_save.grid(row=0,column=0,sticky=W+N+S+E)
        #button close       
        self.b_close=Button(f, text='Close',command=win.quit)
        self.b_close.grid(row=0,column=1,sticky=W+N+S+E)
        return f
       
    def save_input(self):
        self.par['specie']=self.cb_specie.get()
        self.par['type']=self.cb_type.get()
        self.par['fa_file']=self.cb_fa_file.get()
        print self.par['specie']
    
    def grid_layout(self, displays,row=0):
        max_col=max([len(a) for a in displays])
        for row_index, display_row in enumerate(displays):
            col_num=len(display_row)
            #print row_index,max_col/col_num
            for col_index, display_col in enumerate(display_row):
                print row_index,col_index,max_col/col_num   
                display_col.grid(row=row+row_index, column=col_index,
                                 columnspan=max_col/col_num)
       
if __name__=="__main__":
    #comboBox window
    par={}
    cb=myWin(par)
   
    print 'ok'

No comments:

Post a Comment