Exemplo n.º 1
0
    def initView(self):
        self.topFrame = Tk.Frame(self.master)
        self.topFrame.pack(side=Tk.TOP, fill='x')

        self.searchStringVar = Tk.StringVar()
        self.searchBar = Tk.Entry(self.topFrame,
                                  textvariable=self.searchStringVar)
        self.searchStringVar.set(self.searchTerm)
        self.searchBar.pack(side=Tk.LEFT, fill='both', expand='yes')

        self.searchStringVar.trace("w", self.onSearchBarChange)

        self.searchButton = Tk.Button(self.topFrame,
                                      text="Search",
                                      command=self.updateView)
        self.searchButton.pack(side=Tk.RIGHT)

        self.selected = -1

        self.middleFrame = Tk.Frame(self.master)
        self.middleFrame.pack(fill='both', expand=1)

        self.listbox = treectrl.ScrolledMultiListbox(self.middleFrame)
        self.listbox.config(height="20", scrollmode='auto')
        self.listbox.listbox.config(columns=('Name', 'Serving Size',
                                             'Calories', 'Protein', 'Carbs',
                                             'Fat'))
        self.listbox.listbox.column_configure(0, width=160)
        self.listbox.listbox.config(selectcmd=self.selectCmd,
                                    selectmode='single')
        self.listbox.pack(side='top', fill='both', expand=1)

        self.servingFrame = Tk.Frame(self.master)
        self.servingFrame.pack(fill='both')

        Tk.Label(self.servingFrame, text="Servings").pack(side=Tk.LEFT)

        self.servingStringVar = Tk.StringVar()
        self.servingBar = Tk.Entry(self.servingFrame,
                                   textvariable=self.servingStringVar)
        self.servingBar.pack(side=Tk.LEFT)

        self.servingUnitStringVar = Tk.StringVar()
        self.servingUnitCombo = ttk.Combobox(
            self.servingFrame,
            state='readonly',
            textvariable=self.servingUnitStringVar)
        self.servingUnitCombo["values"] = ("Serving(s)")
        self.servingUnitCombo.current(0)
        self.servingUnitCombo.bind("<<ComboboxSelected>>",
                                   self.clearComboSelection)
        self.servingUnitCombo.pack(side=Tk.LEFT)

        self.bottomFrame = Tk.Frame(self.master)
        self.bottomFrame.pack(side=Tk.BOTTOM, fill='x', pady='5', padx='5')

        self.addButton = Tk.Button(self.bottomFrame,
                                   text="Add",
                                   command=self.addToParent)
        self.addButton.pack(fill='x', expand=1)
def audit_record(table_name,field_id_var,field_names,field_labels):
    if field_id_var.get() == "":
        return
    find_window = Toplevel(mw)
    find_window.geometry('700x300+400+200')
    find_window.title('Select Record')
    mlb = treectrl.ScrolledMultiListbox(find_window)
    mlb.pack(side='top', fill='both', expand=1)
    mlb.focus_set()
    mlb.listbox.config(columns=['Identifier','Modified by','Modified on','Removed'] + field_labels,selectmode='extended')
    sql_cmd = "select identifier,modified_by,modified_on,removed"
    for x in field_names:
        sql_cmd += ","+x
    sql_cmd += " from "+table_name+"_aud where identifier = "+field_id_var.get()
    mydb = mysql.connector.connect(
            host=hostname,
            user=username,
            passwd=passwd,
            database=database_name
            )
    mycursor = mydb.cursor()
    print(sql_cmd)
    mycursor.execute(sql_cmd)
    for row in mycursor:
        mlb.listbox.insert('end',*map(str,row))

    number_of_fields = len(field_names)+4  # We have to add 4 extra column for the identifier, mod bu, mod on, removed fields
    sortorder_flags = {}
    for i in range(number_of_fields):
        sortorder_flags[str(i)] = "increasing"

    mlb.listbox.notify_install('<Header-invoke>')
    mlb.listbox.notify_bind('<Header-invoke>', lambda event: sort_list(event,mlb,sort_order_flags))
Exemplo n.º 3
0
    def _makeclustliglibrary(self):
        """ """
        self.resetFrame()
        f = self.frame

        ### LOCAL library panel XXX
        #group = Pmw.Group(f, tag_text = 'Local libraries', tag_font = self.FONTbold)
        #tk.Label(group.interior(), text='NOTHING YET', bg='white').pack(expand=0, fill='x',padx=3)
        #group.pack(expand=0, fill='x',anchor='w', side='top',padx=5, pady=3)

        group = Pmw.Group(f, tag_text = 'Remote libraries', tag_font = self.FONTbold)
        group.pack(expand=1, fill='both',anchor='w', side='top',padx=5, pady=3)
        g = group.interior()

        tbar = tk.Frame(g)
        b1 = tk.Button(tbar, text = 'New', image=self._ICON_add, command = self._call_lib_manager,
            compound='left', font=self.FONTbold, **self.BORDER)
        b1.pack(anchor='w', side='left',padx=1)

        b2 = tk.Button(tbar, text = 'Remove', image=self._ICON_remove, command = self._call_lib_manager_del,
            compound='left', font=self.FONTbold, **self.BORDER)
        b2.pack(anchor='w', side='left',padx=0)

        # check for services upload/download
        # then disable the buttons
        tbar.pack(side='top', anchor='w',padx=2, pady=0)


        #g.pack(expand=1,fill='both',anchor='n', side='top')
       
        f = tk.Frame(g)

        tk.Label(f, text="Selected library :", font=self.FONT).pack(expand=0,anchor='w',side='left', padx=3,pady=1)
        self._selectedLib = tk.Label(f, text = '(none)', bg='white', anchor='w', font=self.FONTbold, **self.BORDER)
        self._selectedLib.pack(anchor='w',side = 'top', expand=1, fill='x', padx=3,pady=1)

        f.pack(expand=0,fill='both',anchor='n', side='top', padx=5, pady =3)



        self.ligLibPanel = TkTreectrl.ScrolledMultiListbox(g, bd=2)
        self.ligLibPanel.listbox.config(bg='white', fg='black', font=self.FONT,
                   columns = ('name', 'items', 'updated', 'format', 
                              'heavy min.', 'heavy max.', 'hba min.', 'hba max.',
                              'hbd min.', 'hbd max', 'mw min', 'mw max', 
                                'tors min', 'tors max', 'atypes') )
        self.ligLibPanel.pack(expand=1, fill='both')
        #self.ligLibPanel.listbox.bind('<ButtonRelease-1>', self._lib_callback)
        self.ligLibPanel.listbox.bind('<Button-3>', self.libselect) #_cb_ssh)
        
        if not self.app.server == None:
            self.dprint("UPDATE THE LIST OF LIBRARIES")
Exemplo n.º 4
0
 def __init__(self,parent, app, problematic):
     rb.RaccoonDefaultWidget.__init__(self, parent)
     Pmw.Dialog.__init__(self, parent, title = 'Problematic results',
         buttons=('Export', 'Close'), defaultbutton='Close', command=self.click)
     self.app = app
     self.problematic = problematic
     cols = ('Ligand file', 'error')
     self.panel = TkTreectrl.ScrolledMultiListbox(self.interior(), bd=2)
     self.panel.listbox.config(bg='white', fg='black', font=self.FONT,
         columns = cols)
     self.panel.pack(expand=1, fill='both', anchor='n', padx='4')
     for f,e in self.problematic:
         self.panel.listbox.insert('END', f, e)
     self.activate()
Exemplo n.º 5
0
    def initView(self):
        self.topFrame = Tk.Frame(self.master)
        self.topFrame.pack(side=Tk.TOP, fill='x')

        self.searchStringVar = Tk.StringVar()
        self.searchBar = Tk.Entry(self.topFrame,
                                  textvariable=self.searchStringVar)
        self.searchStringVar.set(self.searchTerm)
        self.searchBar.pack(side=Tk.LEFT, fill='both', expand='yes')

        self.searchButton = Tk.Button(self.topFrame,
                                      text="Filter",
                                      command=self.updateView)
        self.searchButton.pack(side=Tk.RIGHT)

        self.selected = -1

        self.listbox = treectrl.ScrolledMultiListbox(self.master)
        self.listbox.pack(side='top', fill='both', expand=1)
        self.listbox.config(height="20", scrollmode='auto')
        self.listbox.listbox.config(columns=('Name', 'Serving Size',
                                             'Calories', 'Protein', 'Carbs',
                                             'Fat'))
        self.listbox.listbox.column_configure(0, width=160)
        self.listbox.listbox.config(selectcmd=self.selectCmd,
                                    selectmode='single')

        self.pageFrame = Tk.Frame(self.master)
        self.pageFrame.pack(side="top", fill="x")

        self.addButton = Tk.Button(self.master,
                                   text="Add",
                                   command=self.addToParent)
        self.addButton.pack(side='left')

        self.deleteButton = Tk.Button(self.master,
                                      text="Delete",
                                      command=self.deleteItem)
        self.deleteButton.pack(side='right')
        self.newButton = Tk.Button(self.master,
                                   text="New",
                                   command=self.viewForm)
        self.newButton.pack(side='right')
        self.editButton = Tk.Button(self.master,
                                    text="Edit",
                                    command=self.editCmd)
        self.editButton.pack(side='right')

        self.searchStringVar.trace("w", self.onSearchBarChange)
def main_program():
    table_name = e1.get()
    template_name = e2.get()
    parent_table = ""
    save_defaults(table_name,template_name)
    record_id = 0
    parent_record = 0
    mlb = treectrl.ScrolledMultiListbox(mw)    # Create null mlb and sql_cmd for first call to modify_records
    sql_cmd = "SELECT NULL LIMIT 0"
    identifiers = []
    if template_name == "":
        template_id = [-1]
    else:
        template_id = [template_ids[template_name]]
    modify_records(table_name,template_id,parent_table,record_id,parent_record,mlb,sql_cmd,identifiers)
def main():
    connection = sqlite3.connect(':memory:')
    setup_table(connection)
    cursor = connection.cursor()

    root = tk.Tk()
    root.title('Simple MultiListbox demo')
    mlb = treectrl.MultiListbox(root)
    mlb.pack(side='top', fill='both', expand=1)
    tk.Button(root, text='Close', command=root.quit).pack(side='top', pady=5)
    mlb.focus_set()
    mlb.configure(selectcmd=select_cmd, selectmode='extended')
    mlb.config(columns=('Column 1', 'Column 2'))
    cursor.execute('SELECT * from foo')
    for row in cursor.fetchall():
        mlb.insert('end', *map(unicode, row))
    root.mainloop()
def select_record(table_name,field_id_var,field_names,field_labels,field_entries,label_widgets):
    find_window = Toplevel(mw)
    find_window.geometry('700x300+400+200')
    find_window.title("Select "+table_name+" Record")
    mlb = treectrl.ScrolledMultiListbox(find_window)
    mlb.pack(side='top', fill='both', expand=1)
    mlb.focus_set()
    mlb.listbox.config(columns=['identifier'] + field_labels,selectmode='extended')
    sql_cmd = "SELECT identifier"
    num_columns = 1
    for x in field_names:
        sql_cmd += ","+x
        num_columns += 1
    sql_cmd += " FROM "+table_name+" WHERE (removed = '0')"

    for i in range(num_columns-1):
        if (field_entries[i].entry_type == "TEXTBOX"):
            field_value = field_entries[i].get(1.0,"end").strip()
            if (field_value != ""):
                sql_cmd += " AND ("+field_names[i]+" LIKE '"+field_value+"%')"
        elif (field_entries[i].get() != "") and (field_entries[i].entry_type == "TEXT"):
            sql_cmd += " AND ("+field_names[i]+" LIKE '"+field_entries[i].get()+"%')"
        elif (field_entries[i].get() != "") and (field_entries[i].entry_type == "DATE"):
            sql_cmd += " AND ("+field_names[i]+" LIKE '"+field_entries[i].get()+"%')"
        elif (field_entries[i].get() != "") and (field_entries[i].entry_type == "INT"):
            sql_cmd += " AND ("+field_names[i]+" = "+field_entries[i].get()+")"
        elif (field_entries[i].get() != "") and (field_entries[i].entry_type == "FLOAT"):
            sql_cmd += " AND ("+field_names[i]+" = "+field_entries[i].get()+")"
        elif (field_entries[i].get() != ""):
            sql_cmd += " AND ("+field_names[i]+" = '"+field_entries[i].get()+"')"

    identifiers = []
    load_list_box(mlb,sql_cmd,identifiers,num_columns)

    sortorder_flags = {}
    for i in range(num_columns):
        sortorder_flags[str(i)] = "increasing"

    mlb.listbox.bind('<1>',lambda event: select_cmd(event,find_window,mlb,identifiers,field_id_var))
    mlb.listbox.notify_install('<Header-invoke>')
    mlb.listbox.notify_bind('<Header-invoke>', lambda event: sort_list(event,mlb,sortorder_flags))
Exemplo n.º 9
0
def select_record():
    global find_window
    find_window = Toplevel(mw)
    find_window.geometry('700x300+400+200')
    find_window.title('Select Record')
    global mlb
    mlb = treectrl.ScrolledMultiListbox(find_window)
    mlb.pack(side='top', fill='both', expand=1)
    mlb.focus_set()
    mlb.listbox.config(columns=['identifier'] + field_labels,
                       selectmode='extended')
    sql_cmd = "SELECT identifier"
    for x in field_names:
        sql_cmd += "," + x
    sql_cmd += " from " + e2.get() + " where removed = '1'"
    print("SQL cmd: " + sql_cmd)
    mydb = mysql.connector.connect(host=hostname,
                                   user=username,
                                   passwd=passwd,
                                   database=database_name)
    mycursor = mydb.cursor()
    mycursor.execute(sql_cmd)
    global identifiers
    identifiers = []
    global last_names
    last_names = []
    for row in mycursor:
        identifiers.append(row[0])
        last_names.append(row[1])
        mlb.listbox.insert('end', *map(str, row))
    mlb.listbox.bind('<1>', select_cmd)
    mlb.listbox.notify_install('<Header-invoke>')
    mlb.listbox.notify_bind('<Header-invoke>', sort_list)

    global sortorder_flags
    sortorder_flags = {}
    for i in range(number_of_fields):
        sortorder_flags[str(i)] = "increasing"
Exemplo n.º 10
0
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master

        self.pack()

        self.start_pressing = False

        self.keys = []
        self.switch_key = None

        self.var = tk.IntVar()

        self.key_table = treectrl.MultiListbox(self)
        self.key_table.pack(side="bottom")
        self.key_table.config(columns=("Button Name", "Interval"))

        self.title = tk.Label(self, text="Pycro.")
        self.title.pack()

        self.add_key_button = tk.Button(self,
                                        text="Add Button",
                                        bg="white",
                                        command=self.open_key_window)
        self.add_key_button.pack()

        self.main_key_label = tk.Label(self,
                                       text="Switch hotkey is not set yet.")
        self.main_key_label.pack()

        self.main_key_button = tk.Button(self,
                                         text="Set Switch Hotkey",
                                         command=self.set_switch_key)
        self.main_key_button.pack()

        Thread(target=self.scan_switch).start()
Exemplo n.º 11
0
def main():
    global dirpath
    global searchf
    global listPlist
    global listSongs
    global plistselect2
    global aaa
    global mlist
    global column
    footer = 10
    #rightedge=4
    global dirs

    root = Tk()
    root.bg = 'black'
    root.title('BPM')

    global bpmsort
    configfound = False
    try:
        zz = open('config.json', 'r')
        configfound = True

    except:
        getdir()

    if configfound:
        for line in zz.readlines():
            line = ast.literal_eval(line)
            dirpath = line['dir']
            if len(dirpath) < 3:
                getdir()
    print dirpath, 'dirpath@!!!!!'

    fcol = 10
    menubar = Menu(root)
    filemenu = Menu(menubar, tearoff=12)
    filemenu.add_command(label="Open", command=add)
    filemenu.add_command(label="Save", command=save)
    filemenu.add_command(label="About", command=about)

    filemenu.add_separator()
    filemenu.add_command(label="Exit", command=root.quit)
    menubar.add_cascade(label="File", menu=filemenu)

    filemenu = Menu(menubar, tearoff=0)
    filemenu.add_command(label="Local Songs", command=init(mlist))
    filemenu.add_command(label="Extra_Data", command=export_extra_data)
    filemenu.add_command(label="BeatSaberDB", command=save)
    filemenu.add_command(label="BsaberDB", command=save)

    menubar.add_cascade(label="Update", menu=filemenu)

    filemenu = Menu(menubar, tearoff=0)
    filemenu.add_command(label="Local Songs DB", command=savesongs)
    filemenu.add_command(label="Current Playlist", command=save)
    filemenu.add_command(label="Favorites", command=save)

    menubar.add_cascade(label="Export", menu=filemenu)

    filemenu = Menu(menubar, tearoff=0)
    filemenu.add_command(label="Local Songs DB", command=opensongs)
    filemenu.add_command(label="Current Playlist", command=save)
    filemenu.add_command(label="Favorites", command=save)

    menubar.add_cascade(label="Import", menu=filemenu)

    filemenu = Menu(menubar, tearoff=0)
    bpmsort = filemenu.add_command(label="NEW", command=lambda: sortS(10, 16))

    filemenu.add_command(label="Song", command=lambda: sortS(1, 1))
    filemenu.add_command(label="Artist", command=lambda: sortS(2, 2))
    filemenu.add_command(label="Mapper", command=lambda: sortS(3, 3))
    filemenu.add_command(label="Starred", command=lambda: sortS(4, 4))
    filemenu.add_command(label="Rating", command=lambda: sortS(10, 10))
    filemenu.add_command(label="Score", command=lambda: sortS(6, 6))
    bpmsort = filemenu.add_command(label="BPM", command=lambda: sortS(9, 9))

    filemenu.add_separator()
    filemenu.add_command(label="Easy", command=lambda: sortS(4, 4))
    filemenu.add_command(label="Normal", command=lambda: sortS(5, 5))
    filemenu.add_command(label="Hard", command=lambda: sortS(6, 6))
    filemenu.add_command(label="Expert", command=lambda: sortS(7, 7))
    filemenu.add_command(label="Expert+", command=lambda: sortS(8, 8))

    menubar.add_cascade(label="Sort", menu=filemenu)

    if debug > 0:

        filemenu = Menu(menubar, tearoff=0)

        filemenu.add_command(label="clear", command=lambda: clear_data())
        filemenu.add_command(label="firstload", command=lambda: firstload())
        filemenu.add_command(label="init", command=lambda: init(mlist))
        filemenu.add_command(label="4", command=lambda: sortS(7))
        filemenu.add_command(label="5+", command=lambda: sortS(8))

        menubar.add_cascade(label="Debug", menu=filemenu)

    root.config(menu=menubar)

    #Label(text="All Songs "+str(len(mlist)),font=(20)).grid(row=0,column=0,columnspan=7)
    Label(text="Playlist", font=(20)).grid(row=0, column=8, columnspan=4)

    listPlist = Listbox(root, width=30, height=20, font=("Helvetica", 12))
    listPlist.grid(row=1, column=fcol + 8, columnspan=4)
    listPlist.bind("<Double-Button-1>", OnDouble)

    #listSongs = Listbox(root, width=30, height=20, font=("Helvetica", 12))
    listSongs = Tktree.MultiListbox(root,
                                    width=1200,
                                    height=400,
                                    font=("Helvetica", 12),
                                    backgroundmode="row",
                                    selectmode=1,
                                    selectcmd=nice)
    listSongs.grid(row=1, column=0, rowspan=1, columnspan=fcol + 8)
    #listSongs.config(columns=('Directory', 'Song Name','songSubname','authorName','difficlty','bpm','rating','highscore','date'))
    print emoji.emojize('Python is :thumbs_up:')
    listSongs.config(columns=(emoji.emojize(':star:', use_aliases=True),
                              'Song Name', 'Artist Name', 'Mapper?!', 'E', 'N',
                              'H', 'X', 'P', 'BPM', 'Rating', 'bsid', 'yes'))
    listSongs.column_configure(1, arrow='down')
    listSongs.bind("<Double-Button-1>", OnDouble)
    #listSongs.bind("<Double-Button-1>", add)
    listSongs.column_configure(0, button=True)
    woop = Image.open('shit.png')
    woop = woop.resize((10, 40))
    woop = ImageTk.PhotoImage(woop)
    woop

    listSongs.configure(backgroundimage=woop)

    ##############songdetails=[value,songName,songsubname,authorName,diff,bpm,thumb,environmentName]

    addsongbutton = Button(root,
                           justify='left',
                           anchor='w',
                           text="Filter",
                           command=filter2).grid(row=2, column=0)
    addsongbutton = Button(root, text="Add to Playlist",
                           command=add).grid(row=2, column=2, columnspan=3)

    addallsongbutton = Button(root, text="Add All to Playlist",
                              command=addall).grid(row=8, column=1)

    removesongbutton = Button(
        root,
        text="RemoveSelected",
        command=lambda listPlist=listPlist: listPlist.delete(ANCHOR)).grid(
            row=2,
            column=fcol + 8,
        )
    moveup = Button(root, text="Move up", command=move_up).grid(
        row=2,
        column=fcol + 9,
    )
    movedown = Button(root, text="Move down", command=move_down).grid(
        row=2,
        column=fcol + 10,
    )
    removesongbutton2 = Button(root, text="Remove All",
                               command=remove).grid(row=2, column=fcol + 11)

    #b = Button(master, text="Delete",command=lambda lb=lb: lb.delete(ANCHOR))

    plistselect2 = listPlist.get(ANCHOR)

    Label(text="Rating:", anchor="e").grid(row=2,
                                           column=fcol + 1,
                                           sticky='W' + 'E' + 'S' + 'N')
    fcol = 10

    #ratebutton = Button(root, text="0", command=remove).grid(row=2,column=1,sticky='W'+'E'+'S'+'N')
    ratebutton = Button(root, text="1", command=lambda: rate(1)).grid(
        row=2, column=fcol + 2, sticky='W' + 'E' + 'S' + 'N')
    ratebutton = Button(root, text="2", command=lambda: rate(2)).grid(
        row=2, column=fcol + 3, sticky='W' + 'E' + 'S' + 'N')
    ratebutton = Button(root, text="3", command=lambda: rate(3)).grid(
        row=2, column=fcol + 4, sticky='W' + 'E' + 'S' + 'N')
    ratebutton = Button(root, text="4", command=lambda: rate(4)).grid(
        row=2, column=fcol + 5, sticky='W' + 'E' + 'S' + 'N')
    ratebutton = Button(root, text="5", command=lambda: rate(5)).grid(
        row=2, column=fcol + 6, sticky='W' + 'E' + 'S' + 'N')
    ratebutton = Button(root,
                        text=emoji.emojize(':star:', use_aliases=True),
                        command=lambda: rate(6)).grid(row=2,
                                                      column=fcol + 7,
                                                      sticky='W' + 'E' + 'S' +
                                                      'N')

    #Label(text="Search",font=(20)).grid(row=0,column=5,columnspan=1)
    #Label(text="BLALB",font=(20)).grid(row=0,column=7,columnspan=1,sticky='W'+'S'+'N')
    searchf = Entry(root, font=(20), width=5)
    searchf.grid(row=0, column=fcol + 6, sticky='E' + 'S' + 'N' + 'W')
    print searchf
    sf = searchf.get()
    searchbutton = Button(root,
                          text="search",
                          command=lambda: search(sf, searchf)).grid(
                              row=0, column=fcol + 5, sticky='E' + 'S' + 'N')
    searchbutton = Button(root, text="reset",
                          command=lambda: resettext()).grid(row=0,
                                                            column=fcol + 7,
                                                            sticky='W' + 'S' +
                                                            'N')

    try:
        opensongs()
    except:
        print 'error loading db. scanning dirs...'
        firstload()
        print 'wtf'
    init(mlist)
    #sortS(1)

    mainloop()
Exemplo n.º 12
0
    def __init__(self):
        # windows
        self.window = tk.Tk()
        self.window.title("Openload")
        self.window.geometry("700x500")
        #window.grid_columnconfigure(0, weight=1)
        self.window.grid_columnconfigure(1, weight=1)
        #window.grid_rowconfigure(0, weight=1)
        self.window.grid_rowconfigure(1, weight=1)

        # init entries
        self.lb_frame_init = tk.LabelFrame(self.window,
                                           text='Init info',
                                           takefocus=1,
                                           width=700)
        #lb_frame_init.pack(expand=1, fill='x', pady=10)
        self.lb_frame_init.grid_rowconfigure(0, weight=1)
        self.lb_frame_init.grid(row=0, sticky='ew')

        # init entries
        var_login_id = tk.StringVar()
        var_login_key = tk.StringVar()
        if os.path.exists(self.config_name):
            cf = configparser.ConfigParser()
            cf.read(self.config_name)
            kvs = cf.items(self.section_name)
            for key, value in kvs:
                if key == 'login_id':
                    var_login_id.set(value)
                if key == 'login_key':
                    var_login_key.set(value)

        self.lable_login_id = tk.Label(self.lb_frame_init, text='Login Id: ')
        self.lable_login_id.grid(row=0, column=0, sticky='nsew')
        self.entry_login_id = tk.Entry(self.lb_frame_init,
                                       textvariable=var_login_id,
                                       width=30)
        self.entry_login_id.grid(row=0, column=1, sticky='nsew')

        self.lable_login_key = tk.Label(self.lb_frame_init, text='Login Key: ')
        self.lable_login_key.grid(row=0, column=2)
        self.entry_login_key = tk.Entry(self.lb_frame_init,
                                        textvariable=var_login_key,
                                        width=30)
        self.entry_login_key.grid(row=0, column=3, sticky='nsew')

        # add tabs
        self.tab_control = ttk.Notebook(self.window)
        #tab_control.grid_columnconfigure(0, weight=1)
        self.tab_upload = ttk.Frame(self.tab_control)
        self.tab_upload.grid_rowconfigure(0, weight=1)
        self.tab_upload.grid_columnconfigure(0, weight=1)
        self.tab_upload.grid(sticky='nsew')
        self.tab_control.add(self.tab_upload, text='upload')
        self.tab_control.grid(row=1, sticky='nsew')
        self.tab_download = ttk.Frame(self.tab_control)
        self.tab_control.add(self.tab_download, text='download')

        #upload list
        self.ul_tree_ctrl = TkTreectrl.MultiListbox(self.tab_upload)
        vsb = ttk.Scrollbar(orient="vertical", command=self.ul_tree_ctrl.yview)
        hsb = ttk.Scrollbar(orient="horizontal",
                            command=self.ul_tree_ctrl.xview)
        self.ul_tree_ctrl.configure(selectmode='multiple',
                                    yscrollcommand=vsb.set,
                                    xscrollcommand=hsb.set)
        self.ul_tree_ctrl.config(columns=('file', 'progress'))
        self.ul_tree_ctrl.grid(row=0, column=0, columnspan=2, sticky='nsew')
        vsb.grid(column=2, row=0, sticky='ns', in_=self.tab_upload)
        hsb.grid(column=0,
                 row=1,
                 columnspan=2,
                 sticky='ew',
                 in_=self.tab_upload)

        self.file_sel_button = tk.Button(self.tab_upload,
                                         text='select files',
                                         command=self.select_files)
        self.file_sel_button.grid(row=2, column=0, sticky='w')

        self.upload_button = tk.Button(self.tab_upload,
                                       text='upload',
                                       width=10,
                                       command=self.upload_file)
        self.upload_button.grid(row=2, column=1, sticky='w')

        # data
        self.upload_file_dict = {}
        self.lock = threading.Lock()
        self.cv = threading.Condition(self.lock)
        self.task_queue = task_queue.TaskQueue(2)
        self.task_queue.start()
Exemplo n.º 13
0
    def initUI(self):
        #Frame to display the name and icon of the software
        self.frame = Frame(self.plugin)
        self.frame.pack(fill=BOTH)

        try:
            photo = PhotoImage(master=self,
                               file=os.path.join(iconFolder,
                                                 "lisica_icon.gif"))
            self.display = Label(self.frame, image=photo, background="#BFBFBF")
            self.display.image = photo
            self.display.pack(side=RIGHT)
        except:
            pass
        self.heading = Label(self.frame,
                             text="LiSiCA",
                             font=("Times", 30, "bold"),
                             foreground="brown",
                             background="#BFBFBF",
                             anchor=CENTER)

        self.heading.pack(ipady=10, fill=BOTH, expand=1)

        #Notebook with 3 tabs
        self.note = Notebook(self.plugin)

        self.input_Tab = Frame(self.note)
        self.load_Project_Tab = Frame(self.note)

        self.output_Tab = Frame(self.note)
        self.about_Tab = Frame(self.note)

        self.note.add(self.input_Tab, text="   Inputs     ")
        self.note.add(self.load_Project_Tab, text=" Load Project ")
        self.note.add(self.output_Tab, text="   Outputs   ")
        self.note.add(self.about_Tab, text="   About     ")
        self.note.pack(padx=10,
                       pady=10,
                       ipadx=10,
                       ipady=10,
                       anchor=CENTER,
                       fill=BOTH,
                       expand=1,
                       after=self.frame)

        #Button to close LiSiCA plugin
        #self.closeButton=Button(self.plugin, text='Close', command=self.close)
        #self.closeButton.pack(pady=10,after=self.note,ipady=2)

        #Load Project Tab Design

        Label(self.load_Project_Tab,
              text="Choose the results directory :").grid(row=1,
                                                          sticky=W,
                                                          padx=20,
                                                          pady=(40))
        self.loadResultsEntry = Entry(self.load_Project_Tab, width=50)
        self.loadResultsEntry.grid(row=1, column=2)
        self.loadResultsEntry.insert(0, resultsFolder)

        Button(self.load_Project_Tab,
               text="Browse",
               command=lambda: self.getResultsDir(1)).grid(row=1, column=4)
        Button(self.load_Project_Tab, text="Load",
               command=self.loadResults).grid(row=2, column=4)

        #About Tab Design
        #label_About_style=ttk.Style()
        #label_About_style.configure('AboutTabLabel.TLabel', font=('Helvetica', 12, 'Bold'),foreground="black", background="white")

        self.version_Frame = tk.LabelFrame(self.about_Tab,
                                           text="Product Version Information",
                                           labelanchor="nw",
                                           font=("Times", 12),
                                           relief="ridge",
                                           borderwidth=4)

        self.version_Frame.pack(fill=X, padx=(10, 10), pady=(20, 20))

        from lisica import UpgraderGitlab
        upgraderObj = UpgraderGitlab()
        upgraderObj.findCurrentVersion()
        upgraderObj.findLatestVersionGUI()

        self.currentVersionGUI = StringVar(master=self)
        self.currentVersionGUI.set(upgraderObj.currentVersionGUI)

        #~ upgraderObj.latestVersion = upgraderObj.latestVersion[1:]
        #~ print "lversion = ", upgraderObj.latestVersion

        Label(self.version_Frame,
              text="LiSiCA GUI Version :",
              font=("Times", 11)).grid(row=7,
                                       columnspan=2,
                                       padx=(10, 10),
                                       pady=(10, 10),
                                       sticky=W)
        Label(self.version_Frame,
              textvariable=self.currentVersionGUI,
              font=("Times", 11)).grid(row=7,
                                       column=2,
                                       columnspan=2,
                                       padx=(10, 10),
                                       pady=(10, 10),
                                       sticky=W)

        #Checking for latest upgrades
        from distutils.version import StrictVersion
        if StrictVersion(upgraderObj.currentVersionGUI) < StrictVersion(
                upgraderObj.latestVersionGUI):
            Label(self.version_Frame,
                  text="Upgrade of LiSiCA GUI is available!",
                  font=("Times", 11, 'bold')).grid(row=8,
                                                   column=0,
                                                   columnspan=2,
                                                   padx=(10, 10),
                                                   pady=(10, 10),
                                                   sticky=W)

            def doUpgrade():
                upgraderObj.upgrade()
                self.close()

            self.upgrade_Button = Button(self.version_Frame,
                                         text="Upgrade to version " +
                                         upgraderObj.latestVersionGUI,
                                         command=lambda: doUpgrade())
            self.upgrade_Button.grid(row=9,
                                     column=3,
                                     sticky=E,
                                     pady=(5, 5),
                                     padx=(5, 5))

        self.contact_Frame = tk.LabelFrame(self.about_Tab,
                                           text="Contact Us",
                                           labelanchor="nw",
                                           font=("Times", 12),
                                           relief="ridge",
                                           borderwidth=4)
        self.contact_Frame.pack(fill=X, padx=(10, 10), pady=(20, 20))
        Label(self.contact_Frame,
              text="Contact Us at [email protected]",
              font=("Times", 11)).grid(columnspan=2,
                                       padx=(10, 10),
                                       pady=(10, 10),
                                       sticky=W)
        Label(self.contact_Frame,
              text="Please feel free to visit our website : ",
              font=("Times", 11)).grid(row=2,
                                       columnspan=2,
                                       padx=(10, 5),
                                       pady=(10, 10),
                                       sticky=W)

        self.website = Label(self.contact_Frame,
                             text=r"http://www.insilab.com",
                             font=("Times", 11),
                             foreground="blue",
                             underline=True)
        import tkFont
        hyperlink_font = tkFont.Font(self.website, self.website.cget("font"))
        hyperlink_font.configure(underline=True)
        self.website.configure(font=hyperlink_font)

        self.website.grid(row=2,
                          column=2,
                          columnspan=2,
                          padx=(0, 10),
                          pady=(10, 10),
                          sticky=W)
        self.website.bind("<Button-1>", self.openWebsite)
        #Input Tab Design

        #Choose Mol2 file for Reference Ligand
        Label(self.input_Tab, text="Reference Ligand: ").grid(row=1,
                                                              sticky=W,
                                                              pady=(20, 10),
                                                              padx=20)
        self.ref_Entry = Entry(self.input_Tab, width=50)

        self.ref_Entry.grid(row=1, column=2, pady=(20, 10))

        self.button_BrowseRef = Button(self.input_Tab,
                                       text="Browse",
                                       command=self.getRefFileName)
        self.button_BrowseRef.grid(row=1, column=4, pady=(20, 10))

        #Choose Mol2 file for Target Ligand(s)
        Label(self.input_Tab, text="Target Ligand(s):").grid(row=2,
                                                             sticky=W,
                                                             padx=20)
        self.tar_Entry = Entry(self.input_Tab, width=50)
        self.tar_Entry.grid(row=2, column=2)
        Button(self.input_Tab, text="Browse",
               command=self.getTarFileName).grid(row=2, column=4)

        #set variables for dimension parameters
        self.parameter = StringVar(master=self)
        self.units = StringVar(master=self)
        #set default for parameters
        self.parameter.set("Maximum allowed Shortest Path difference: ")
        self.units.set("bonds")

        global Conf_Label, conformations
        #declaring these widget variables outside the function dim()
        #prevents repeated creation of widgets.

        self.conf_Label = Label(self.input_Tab, text="No of conformations: ")
        self.conformations = Entry(self.input_Tab, width=10)
        self.conformations.insert(0, "1")

        #2D or 3D Screening? Default is 2D- RadioButtons
        self.dimension = IntVar(master=self)
        self.dimension.set(2)

        self.d2 = Radiobutton(self.input_Tab,
                              text="2 Dimensional Screening",
                              variable=self.dimension,
                              value=2,
                              command=self.dim)
        self.d3 = Radiobutton(self.input_Tab,
                              text="3 Dimensional Screening",
                              variable=self.dimension,
                              value=3,
                              command=self.dim)
        Label(self.input_Tab,
              text="Product Graph Dimension:").grid(row=5,
                                                    columnspan=2,
                                                    sticky=W,
                                                    pady=10,
                                                    padx=20)
        self.d2.grid(row=5, column=2, columnspan=2, sticky=W + E)
        self.d3.grid(row=6, column=2, columnspan=2, sticky=W + E)

        #Depending on the dimension chosen
        self.maxLabel = Label(self.input_Tab, textvariable=self.parameter)
        self.maxLabel.grid(row=7, sticky=W, pady=10, padx=20)
        self.maxLabel.update()
        self.max_Entry = Entry(self.input_Tab, width=10)
        self.max_Entry.grid(row=7, column=2, sticky=W)
        self.max_Entry.insert(0, "1")

        #Value to be acquired and passed
        #To display the unit, uncomment the following line
        #Label(self.input_Tab, textvariable=self.units).grid(row=7,column=2)

        self.w_Label = Label(
            self.input_Tab,
            text="No of highest ranked molecules to write to the output: ")
        self.w_Entry = Entry(self.input_Tab, width=10)

        self.w_Label.grid(row=9, sticky=W, pady=10, padx=20)
        self.w_Entry.grid(row=9, column=2, sticky=W)
        self.w_Entry.insert(0, "100")

        self.hydrogen = IntVar(master=self)

        Label(self.input_Tab, text="Consider Hydrogens :").grid(row=11,
                                                                sticky=W,
                                                                pady=10,
                                                                padx=20)
        self.checkBox = Checkbutton(self.input_Tab,
                                    variable=self.hydrogen,
                                    command=self.updateCommand)

        self.checkBox.grid(row=11, column=2, sticky=W)

        #Get the no of CPU cores available in the system
        self.CPU_Cores = IntVar(master=self)
        self.CPU_Cores.set(multiprocessing.cpu_count())  #Deafult=all CPU cores
        #Widget to set the CPU count manually- Slider
        Label(self.input_Tab,
              text="Number of CPU cores to be used: ").grid(row=12,
                                                            sticky=W,
                                                            pady=10,
                                                            padx=20)
        #Defualt = All available CPU cores
        self.slider = tk.Scale(self.input_Tab,
                               variable=self.CPU_Cores,
                               from_=1,
                               to=multiprocessing.cpu_count(),
                               length=100,
                               resolution=1,
                               orient=HORIZONTAL,
                               command=self.onEvent)
        self.slider.grid(row=12, column=2, pady=10, sticky=W)

        #Option to choose the directory for Results of LiSiCA
        Label(self.input_Tab, text="Save results in:").grid(row=13,
                                                            sticky=W,
                                                            padx=20)
        self.saveResultsEntry = Entry(self.input_Tab, width=50)
        self.saveResultsEntry.grid(row=13, column=2, pady=10)
        self.saveResultsEntry.insert(0, resultsFolder)
        Button(self.input_Tab,
               text="Browse",
               command=lambda: self.getResultsDir(0)).grid(row=13, column=4)

        self.display_Command = Text(self.input_Tab, height=3)
        self.display_Command.grid(row=14, columnspan=6, sticky=W + E)

        self.retag("Parameters", self.ref_Entry, self.tar_Entry,
                   self.conformations, self.w_Entry, self.max_Entry,
                   self.saveResultsEntry, self.input_Tab)
        self.bind_class("Parameters", "<Button-1>", self.onEvent)
        self.bind_class("Parameters", "<KeyPress>", self.onEvent)

        self.go_Button = Button(self.note, text="GO", command=self.submitted)
        self.go_Button.grid(row=17, column=4, pady=(5, 5), in_=self.input_Tab)

        # Output Tab Design
        #Frame on the left half of Output Tab for displaying the Results
        self.frame_Result = Frame(self.output_Tab)
        self.frame_Result.pack(side=LEFT, fill=BOTH, expand=1)
        #Frame on the right half Output Tab for displaying the Atom correspondence
        self.frame_Corr = Frame(self.output_Tab)
        self.frame_Corr.pack(side=RIGHT, fill=BOTH, expand=1)

        #Design of the Result frame
        self.ref = ()
        self.tar = ()

        #Add a scroll bar named scrollbar1
        self.scrollbar1 = Scrollbar(self.frame_Result)
        self.scrollbar1.pack(side=RIGHT, fill=Y)
        #Add a multi-column list box to the frame
        #The MultiListBox class belongs to TkTreectrl module
        #TkTreectrl package is an external package and is to be downloaded and installed
        self.multiListBox1 = TkTreectrl.MultiListbox(
            self.frame_Result,
            yscrollcommand=self.scrollbar1.set,
            expandcolumns=(1, 2),
            selectcmd=self.showCorr)
        self.multiListBox1.pack(side=LEFT, fill=BOTH, expand=1)
        self.multiListBox1.config(columns=('Rank', 'ZINC ID',
                                           "Tanimoto score"))
        #The scrollbar2 is linked to the multiListBox2
        self.scrollbar1.config(command=self.multiListBox1.yview)

        #Design of the Atoms' Correspondence displaying frame
        #Add a scroll bar named scrollbar2
        self.scrollbar2 = Scrollbar(self.frame_Corr)
        self.scrollbar2.pack(side=RIGHT, fill=Y)
        #Add a multi-column list box to the frame
        #The MultiListBox class belongs to TkTreectrl module
        #TkTreectrl package is an external package and is to be downloaded and installed
        self.multiListBox2 = TkTreectrl.MultiListbox(
            self.frame_Corr,
            yscrollcommand=self.scrollbar2.set,
            expandcolumns=(0, 1, 2, 3, 4),
            selectcmd=self.showCorrAtoms)
        self.multiListBox2.pack(side=LEFT, fill=BOTH, expand=1)
        self.multiListBox2.config(columns=('Ref. Num', 'Ref. Atom', 'Tar. Num',
                                           'Tar. Atom', 'Atom Type'))
        #The scrollbar2 is linked to the multiListBox2
        self.scrollbar2.config(command=self.multiListBox2.yview)

        self.pack()
Exemplo n.º 14
0
    def initView(self):
        self.selected = -1

        self.master.geometry("580x400")

        self.topFrame = Tk.Frame(self.master)
        self.topFrame.pack(side=Tk.TOP, fill='x')

        self.searchBar = Tk.Entry(self.topFrame)
        self.searchBar.pack(side=Tk.LEFT, fill='both', expand='yes')

        self.inventoryButton = Tk.Button(self.topFrame,
                                         text="Inventory",
                                         command=self.viewInventory)
        self.inventoryButton.pack(side=Tk.RIGHT)

        self.searchButton = Tk.Button(self.topFrame,
                                      text="Search",
                                      command=self.viewSearch)
        self.searchButton.pack(side=Tk.RIGHT)

        self.middleFrame = Tk.Frame(self.master)
        self.middleFrame.pack(fill='x', pady=2, padx=1)

        today = date.today()

        self.monthStringVar = Tk.StringVar()
        self.monthCombo = ttk.Combobox(self.middleFrame,
                                       state='readonly',
                                       textvariable=self.monthStringVar,
                                       width=10)
        self.monthCombo.bind("<<ComboboxSelected>>", self.clearComboSelection)
        months = ("January", "Febuary", "March", "April", "May", "June",
                  "July", "August", "September", "October", "November",
                  "December")
        self.monthCombo["values"] = months
        self.monthCombo.current(today.month - 1)
        self.monthCombo.pack(side=Tk.LEFT)

        self.dayStringVar = Tk.StringVar()
        self.dayCombo = ttk.Combobox(self.middleFrame,
                                     state='readonly',
                                     textvariable=self.dayStringVar,
                                     width=10)
        today = date.today()
        daysInMonth = monthrange(today.year, today.month)

        days = []
        for i in range(daysInMonth[1]):
            days.append(str(i + 1))
        self.dayCombo["values"] = days
        self.dayCombo.current(today.day - 1)
        self.dayCombo.pack(side=Tk.LEFT)
        self.dayCombo.bind("<<ComboboxSelected>>", self.clearComboSelection)
        self.yearStringVar = Tk.StringVar()
        self.yearCombo = ttk.Combobox(self.middleFrame,
                                      state='readonly',
                                      textvariable=self.yearStringVar,
                                      width=10)

        thisYear = today.year
        years = [str(thisYear)]
        for i in range(4):
            years.append(str(thisYear - i - 1))
        years = tuple(years)

        self.yearCombo["values"] = years
        self.yearCombo.current(0)
        self.yearCombo.pack(side=Tk.LEFT)

        self.yearCombo.bind("<<ComboboxSelected>>", self.clearComboSelection)
        self.bottomFrame = Tk.Frame(self.master)
        self.bottomFrame.pack(fill="both", expand=1)

        self.listbox = treectrl.ScrolledMultiListbox(self.bottomFrame)
        self.listbox.config(height="20", scrollmode='auto')
        self.listbox.listbox.config(columns=('Name', 'Servings', 'Calories',
                                             'Protein', 'Carbs', 'Fat'))
        self.listbox.listbox.config(selectcmd=self.selectCmd,
                                    selectmode='single')

        #self.listbox.listbox.column_configure(0, width=260)
        self.listbox.pack(side='top', fill='both', expand=1)

        self.editButton = Tk.Button(self.bottomFrame,
                                    text="Edit",
                                    command=self.editCmd)
        self.editButton.pack(side='right')
        self.deleteButton = Tk.Button(self.bottomFrame,
                                      text="Delete",
                                      command=self.deleteCmd)
        self.deleteButton.pack(side='right')

        Tk.Frame(self.bottomFrame).pack(side='right', padx=12)

        self.downImage = Tk.BitmapImage(file="down.xbm")
        self.downButton = Tk.Button(self.bottomFrame,
                                    image=self.downImage,
                                    text="Down",
                                    command=self.downCmd)
        self.downButton.pack(side='right', fill='y')

        self.upImage = Tk.BitmapImage(file="up.xbm")
        self.upButton = Tk.Button(self.bottomFrame,
                                  image=self.upImage,
                                  text="Up",
                                  command=self.upCmd)
        self.upButton.pack(side='right', fill='y')

        self.exportButton = Tk.Button(self.bottomFrame,
                                      text="Export CSV",
                                      command=self.exportCmd)
        self.exportButton.pack(side='left')

        self.statsFrame = Tk.Frame(self.master)
        self.statsFrame.pack(side='top', pady=2, fill='x')

        self.footerFont = tkFont.Font(size=10)
        self.footerBoldFont = tkFont.Font(size=10, weight='bold')

        self.footerPad = 4

        self.caloriesFrame = Tk.Frame(self.statsFrame)
        self.caloriesFrame.pack(side='left', padx=self.footerPad)
        self.caloriesTopFrame = Tk.Frame(self.caloriesFrame)
        self.caloriesTopFrame.pack(side='top', fill='x')
        self.caloriesBottomFrame = Tk.Frame(self.caloriesFrame)
        self.caloriesBottomFrame.pack(side='bottom', fill='x')

        self.caloriesStringVar = Tk.StringVar()
        Tk.Label(self.caloriesTopFrame, text="Calories",
                 font=self.footerFont).pack(side='left')
        self.caloriesLabel = Tk.Label(self.caloriesBottomFrame,
                                      textvariable=self.caloriesStringVar,
                                      font=self.footerBoldFont)
        self.caloriesLabel.pack(side='left')

        self.proteinFrame = Tk.Frame(self.statsFrame)
        self.proteinFrame.pack(side='left', padx=self.footerPad)
        self.proteinTopFrame = Tk.Frame(self.proteinFrame)
        self.proteinTopFrame.pack(side='top', fill='x')
        self.proteinBottomFrame = Tk.Frame(self.proteinFrame)
        self.proteinBottomFrame.pack(side='bottom', fill='x')

        self.proteinStringVar = Tk.StringVar()
        Tk.Label(self.proteinTopFrame, text=" Protein",
                 font=self.footerFont).pack(side='left')
        self.proteinLabel = Tk.Label(self.proteinBottomFrame,
                                     textvariable=self.proteinStringVar,
                                     font=self.footerBoldFont)
        self.proteinLabel.pack(side='left')

        self.carbFrame = Tk.Frame(self.statsFrame)
        self.carbFrame.pack(side='left', padx=self.footerPad)
        self.carbTopFrame = Tk.Frame(self.carbFrame)
        self.carbTopFrame.pack(side='top', fill='x')
        self.carbBottomFrame = Tk.Frame(self.carbFrame)
        self.carbBottomFrame.pack(side='bottom', fill='x')

        self.carbStringVar = Tk.StringVar()
        Tk.Label(self.carbTopFrame, text=" Carb",
                 font=self.footerFont).pack(side='left')
        self.carbLabel = Tk.Label(self.carbBottomFrame,
                                  textvariable=self.carbStringVar,
                                  font=self.footerBoldFont)
        self.carbLabel.pack(side='left')

        self.fatFrame = Tk.Frame(self.statsFrame)
        self.fatFrame.pack(side='left', padx=self.footerPad)
        self.fatTopFrame = Tk.Frame(self.fatFrame)
        self.fatTopFrame.pack(side='top', fill='x')
        self.fatBottomFrame = Tk.Frame(self.fatFrame)
        self.fatBottomFrame.pack(side='bottom', fill='x')

        self.fatStringVar = Tk.StringVar()
        Tk.Label(self.fatTopFrame, text=" Fat",
                 font=self.footerFont).pack(side='left')
        self.fatLabel = Tk.Label(self.fatBottomFrame,
                                 textvariable=self.fatStringVar,
                                 font=self.footerBoldFont)
        self.fatLabel.pack(side='left')
Exemplo n.º 15
0
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        # 该 list 内部存放多个子 list,每个子 list 为 [标注点的坐标, 标注]
        self.data_notes = []

        topFrame = tk.Frame(self)

        # 创建一个空的 DataFrame
        self.df_data = pd.DataFrame(columns=['date', 'balance', 'memo'])

        self.btnMainPage = tk.Button(topFrame,
                                     text="主页面",
                                     command=self.on_btn_main_page).pack(
                                         side=tk.LEFT, padx=4)
        # 日期选择
        # Calendar((x, y), 'ur').selection() 获取日期,x,y为点坐标
        date_start_gain = lambda: [
            self.date_start.set(date)
            for date in [CalendarCustom(None, 'ur').selection()] if date
        ]
        tk.Button(topFrame, text='日期:',
                  command=date_start_gain).pack(side=tk.LEFT, padx=4)

        self.date_start = tk.StringVar()
        ttk.Entry(topFrame, textvariable=self.date_start).pack(side=tk.LEFT)

        today = datetime.date.today()
        self.date_start.set(today)

        tk.Label(topFrame, text="账户余额:").pack(side=tk.LEFT)
        self.strBalance = tk.StringVar(value='')
        ttk.Entry(topFrame, width=15,
                  textvariable=self.strBalance).pack(side=tk.LEFT, padx=4)
        tk.Label(topFrame, text="备注:").pack(side=tk.LEFT)
        self.strMemo = tk.StringVar(value='')
        ttk.Entry(topFrame, width=25,
                  textvariable=self.strMemo).pack(side=tk.LEFT, padx=4)

        tk.Button(topFrame, text="添加", width=10,
                  command=self.on_btn_add).pack(side=tk.LEFT, padx=4)

        topFrame.pack(side=tk.TOP, fill=tk.BOTH)

        # 列表框
        frameReport = tk.Frame(self)
        mlbDatasFrame = tk.Frame(frameReport)
        scrollbarBalance = tk.Scrollbar(mlbDatasFrame, orient=tk.HORIZONTAL)
        scrollbarBalanceV = tk.Scrollbar(mlbDatasFrame, orient=tk.VERTICAL)
        self.mlbBalance = treectrl.MultiListbox(
            mlbDatasFrame,
            xscrollcommand=scrollbarBalance.set,
            yscrollcommand=scrollbarBalanceV.set)
        scrollbarBalance.config(command=self.mlbBalance.xview)
        scrollbarBalance.pack(side=tk.BOTTOM, fill=tk.X)
        scrollbarBalanceV.config(command=self.mlbBalance.yview)
        scrollbarBalanceV.pack(side=tk.RIGHT, fill=tk.Y)
        self.mlbBalance.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
        self.mlbBalance.focus_set()
        self.mlbBalance.configure(selectcmd=self.tree_solution_selected,
                                  selectmode='single')
        self.mlbBalance.config(columns=('日期', '余额', '备注'))
        mlbDatasFrame.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
        frameReport.pack(side=tk.LEFT, fill=tk.BOTH, expand=0, pady=4)

        # 显示中文标签
        plt.rcParams['font.sans-serif'] = ['SimHei']
        # 显示负号
        plt.rcParams['axes.unicode_minus'] = False
        # 有中文使用 u'中文内容'

        self.draw()
        self.load_data()
Exemplo n.º 16
0
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        self.flag = 0
        # 补充数据线程,已运行
        self.FLAG_THRD_FETCH_DATA = 1

        topFrame = tk.Frame(self)
        self.btnDiary = tk.Button(topFrame,
                                  text="股市日志",
                                  command=self.on_btn_diary).pack(side=tk.LEFT,
                                                                  padx=4)
        tk.Button(topFrame, text="资金日志",
                  command=self.on_btn_capital_diary).pack(side=tk.LEFT, padx=4)
        self.btnFetchData = tk.Button(topFrame,
                                      text="补充数据",
                                      command=self.on_btn_fetch_data).pack(
                                          side=tk.LEFT, padx=4)
        self.chkPowerOffWhenDone = tk.IntVar()
        tk.Checkbutton(topFrame,
                       text="完成后关机",
                       variable=self.chkPowerOffWhenDone).pack(side=tk.LEFT,
                                                               padx=4)

        self.btnScreen = tk.Button(topFrame,
                                   text="选股操作",
                                   command=self.on_btn_screen).pack(
                                       side=tk.LEFT, padx=4)
        self.btnTester = tk.Button(topFrame,
                                   text="策略测试",
                                   command=self.on_btn_tester).pack(
                                       side=tk.LEFT, padx=4)
        self.btnRiseSort = tk.Button(topFrame,
                                     text="阶段涨幅排行",
                                     command=self.on_btn_rise_sort).pack(
                                         side=tk.LEFT, padx=4)

        # 日期选择
        # Calendar((x, y), 'ur').selection() 获取日期,x,y为点坐标
        date_start_gain = lambda: [
            self.date_start.set(date)
            for date in [CalendarCustom(None, 'ur').selection()] if date
        ]
        tk.Button(topFrame, text='开始日期:',
                  command=date_start_gain).pack(side=tk.LEFT, padx=4)

        self.date_start = tk.StringVar()
        ttk.Entry(topFrame, textvariable=self.date_start).pack(side=tk.LEFT)

        today = datetime.date.today()
        self.date_start.set(today)

        # 结束日期
        date_end_gain = lambda: [
            self.date_end.set(date)
            for date in [CalendarCustom(None, 'ur').selection()] if date
        ]
        tk.Button(topFrame, text='结束日期:',
                  command=date_end_gain).pack(side=tk.LEFT, padx=4)

        self.date_end = tk.StringVar()
        ttk.Entry(topFrame, textvariable=self.date_end).pack(side=tk.LEFT)

        today = datetime.date.today()
        self.date_end.set(today)

        topFrame.pack(side=tk.TOP, fill=tk.BOTH)

        # 列表框
        self.frameReport = tk.Frame(self)
        mlbDatasFrame = tk.Frame(self.frameReport)
        scrollbarSolution = tk.Scrollbar(mlbDatasFrame, orient=tk.HORIZONTAL)
        scrollbarSolutionV = tk.Scrollbar(mlbDatasFrame, orient=tk.VERTICAL)
        self.mlbSolution = treectrl.MultiListbox(
            mlbDatasFrame,
            xscrollcommand=scrollbarSolution.set,
            yscrollcommand=scrollbarSolutionV.set)
        scrollbarSolution.config(command=self.mlbSolution.xview)
        scrollbarSolution.pack(side=tk.BOTTOM, fill=tk.X)
        scrollbarSolutionV.config(command=self.mlbSolution.yview)
        scrollbarSolutionV.pack(side=tk.RIGHT, fill=tk.Y)
        self.mlbSolution.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
        self.mlbSolution.focus_set()
        self.mlbSolution.configure(selectcmd=self.tree_solution_selected,
                                   selectmode='single')
        self.mlbSolution.config(columns=('编码', '名称', '涨幅'))
        mlbDatasFrame.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
        self.frameReport.pack(side=tk.TOP, fill=tk.BOTH, expand=1, pady=4)
        self.frameReport.pack_forget()

        # 补充数据输出记录
        self.frameOutput = tk.Frame(self)
        self.textOutput = tk.Text(self.frameOutput)
        self.textOutput.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)
        scrollbarOutputV = tk.Scrollbar(self.frameOutput, orient=tk.VERTICAL)
        scrollbarOutputV.config(command=self.textOutput.yview)
        scrollbarOutputV.pack(side=tk.RIGHT, fill=tk.Y)
        self.textOutput.config(yscrollcommand=scrollbarOutputV.set)
        self.frameOutput.pack(side=tk.TOP, fill=tk.BOTH, expand=1, pady=4)

        frameStatus = tk.Frame(self)
        self.statusStr = tk.StringVar()
        self.status = tk.Label(frameStatus,
                               textvariable=self.statusStr,
                               height=1,
                               anchor='w',
                               fg="black",
                               font=("simsun", 12))
        self.status.pack(side=tk.BOTTOM, fill=tk.X, expand=1)
        frameStatus.pack(side=tk.BOTTOM, fill=tk.X, expand=0)
        self.statusStr.set('状态:准备...')
def modify_records(table_name,template_id,parent_table,record_id,parent_record,mlb,parent_sql_cmd,identifiers):
    new_window = Toplevel(mw)
    new_window.wm_title("Modify "+table_name+" Record")
    new_window.geometry('920x550+250+150')
    new_window.protocol("WM_DELETE_WINDOW",lambda: reload_multi_list_box(mlb,new_window,parent_sql_cmd,identifiers))

    TAB_CONTROL = ttk.Notebook(new_window)
    #Tab1
    TAB1 = ttk.Frame(TAB_CONTROL)
    TAB_CONTROL.add(TAB1, text=table_name)
    TAB_CONTROL.pack(expand=1, fill="both")

    new_frame1 = Frame(TAB1)
    new_frame2 = Frame(TAB1,highlightthickness=1,highlightcolor="gray",highlightbackground="gray")
    new_frame3 = Frame(TAB1)
    new_frame1.pack(side=TOP,fill=X)
    new_frame2.pack(side=TOP,fill=X)
    new_frame3.pack(side=BOTTOM,fill=X)

    label1 = Label(new_frame1, text="Identifier",font=("Times",16))
    label1.grid(row=0,column=0)
    field_id_var = StringVar()
    field_id = Entry(new_frame1,width=40,font=("Times",16),textvariable = field_id_var,validate="focusout",validatecommand=lambda: get_record(scroll_frame,table_name,template_id,field_id_var,field_mb_var,field_mo_var,field_names,field_labels,field_entries,label_widgets,orig_mod,child_tables,child_tabs,child_mlbs,child_field_names))
    field_id.grid(row=0,column=1)

    find_button = Button(new_frame1,text='Find',font=("Times",16),command=lambda: select_record(table_name,field_id_var,field_names,field_labels,field_entries,label_widgets))
    find_button.grid(row=0,column=2)


    label1 = Label(new_frame1, text="Modified By",font=("Times",16))
    label1.grid(row=1,column=0)
    field_mb_var = StringVar()
    field_mb = Entry(new_frame1,width=40,font=("Times",16),state="readonly",textvariable=field_mb_var)
    field_mb.grid(row=1,column=1)

    label1 = Label(new_frame1, text="Modified On",font=("Times",16))
    label1.grid(row=2,column=0)
    field_mo_var = StringVar()
    field_mo = Entry(new_frame1,width=40,font=("Times",16),state="readonly",textvariable=field_mo_var)
    field_mo.grid(row=2,column=1)

    # The following code will create a canvas and scrollbar for the fields in new_frame2
    canvas=Canvas(new_frame2)
    scroll_frame=Frame(canvas)
    myscrollbar=Scrollbar(new_frame2,orient="vertical",command=canvas.yview)
    canvas.configure(yscrollcommand=myscrollbar.set)
    myscrollbar.pack(side="right",fill="y")
    canvas.pack(side="left")
    canvas.create_window((0,0),window=scroll_frame,anchor='nw')
    scroll_frame.bind("<Configure>",lambda event: myfunction(event,canvas))

    # Get table fields
    mydb = mysql.connector.connect(
            host=hostname,
            user=username,
            passwd=passwd,
            database=database_name
            )
    mycursor = mydb.cursor(buffered=True)

    # check if there are child tables
    sql_cmd = "SELECT table_name FROM table_header WHERE (parent_table = '"+table_name+"') ORDER BY identifier"
    mycursor.execute(sql_cmd)
    child_tables = []
    child_field_names = []
    child_tabs = []
    child_mlbs = []
    i = 0
    for row in mycursor: # Check if the list is not empty
        child_tables.append(row[0])
        child_tabs.append(ttk.Frame(TAB_CONTROL))
        TAB_CONTROL.add(child_tabs[i], text=row[0])
        child_field_names.append([])

        mycursor2 = mydb.cursor()
        sql_cmd = "select field_name,field_label,data_type,field_len,link_table,sort_order,parent_table from table_details where (table_name = '"+row[0]+"') and (removed='0') order by sort_order"
        mycursor2.execute(sql_cmd)

        child_field_labels = []
        for x in mycursor2:
            child_field_names[i].append(x[0])
            child_field_labels.append(x[1])

        child_mlbs.append(treectrl.ScrolledMultiListbox(child_tabs[i]))
        child_mlbs[i].pack(side='top', fill='both', expand=1)
        child_mlbs[i].listbox.config(columns=['Identifier','Modified by','Modified on','Removed'] + child_field_labels,selectmode='extended')
        i += 1

    field_labels = []
    field_names = []
    field_entries = []
    label_widgets = []
    load_field_details(scroll_frame,table_name,template_id,mycursor,field_labels,field_names,field_entries,label_widgets)
    call_pre_entry_action(table_name,field_entries,field_names,template_id)

    orig_mod = ["",""]

    create_button = Button(new_frame3,text='Create Record',font=("Times",16),command=lambda: create_record(table_name,template_id,parent_table,field_id_var,field_mb_var,field_mo_var,field_names,field_entries,label_widgets,new_window,orig_mod)).pack(side="left")
    update_button = Button(new_frame3,text='Update Record',font=("Times",16),command=lambda: update_record(table_name,field_id_var,field_mb_var,field_mo_var,field_names,field_entries,label_widgets,new_window,orig_mod)).pack(side="left")
    remove_button = Button(new_frame3,text='Remove Record',font=("Times",16),command=lambda: remove_record(table_name,field_id_var,field_mb_var,field_mo_var,field_names,field_entries,label_widgets,new_window,orig_mod)).pack(side="left")
    audit_button = Button(new_frame3,text='Audit History',font=("Times",16),command=lambda: audit_record(table_name,field_id_var,field_names,field_labels)).pack(side="left")
    clear_button = Button(new_frame3,text='Clear',font=("Times",16),command=lambda: clear_record(table_name,parent_table,field_id_var,field_mb_var,field_mo_var,field_names,field_entries,label_widgets)).pack(side="left")
    template_button = Button(new_frame3,text='Template',font=("Times",16),command=lambda: prompt_for_template(scroll_frame,table_name,field_labels,field_names,field_entries,label_widgets,template_id,field_id_var,field_mb_var,field_mo_var,parent_record)).pack(side="left")
    exit_button = Button(new_frame3,text='Exit',font=("Times",16),command=lambda: reload_multi_list_box(mlb,new_window,parent_sql_cmd,identifiers)).pack(side="right")

    if record_id > 0:
        field_id_var.set(record_id)
    if int(parent_record) > 0:  # If child table, set parent table field
        field_entries[0].configure(state="normal")
        field_entries[0].delete(0,END)
        field_entries[0].insert(0,parent_record)
        field_entries[0].configure(state="readonly")
Exemplo n.º 18
0
    pLabel.image = photo
    pLabel.pack(side=LEFT, expand=1)

    profile_label = Label(
        frame4,
        text="Welcome to KindleQuotes!\n Create or Select a profile.",
        bg="#333333",
        fg="#fff",
        font=("Helvetica", 18),
        wraplength=600)
    profile_label.pack(fill=X, expand=1, ipady=10)

    scroll_msg = Scrollbar(frame2, orient=VERTICAL)
    msg_box = treectrl.MultiListbox(frame2,
                                    yscrollcommand=scroll_msg.set,
                                    font=(
                                        "Helvetica",
                                        11,
                                    ))
    scroll_msg.config(command=msg_box.yview, highlightbackground="#fff")
    scroll_msg.pack(side=RIGHT, fill=Y)
    msg_box.pack(fill=BOTH, expand=1)

    msg_box.config(selectcmd=get_book,
                   selectmode='extended',
                   columns=('Author', 'Title', 'ID'),
                   expandcolumns=[0, 1],
                   width=750)
    [[
        msg_box.column_configure(msg_box.column(x),
                                 arrow='down',
                                 arrowgravity='right')
Exemplo n.º 19
0
def get_book(sel):
    '''Open selected book.'''
    global quote_box
    global search_entry
    global search_box

    profile.search_terms = []

    book_string = msg_box.get(sel[0])[0]
    profile.book_id = book_string[2]
    profile.book_title = " - ".join([book_string[1], book_string[0]])

    quote_win = Toplevel(root)
    quote_win.title(profile.book_title)
    quote_win.config(bg="#333333")

    qs = Frame(quote_win)
    qs.config(pady=2, bg="#333333")
    qs.pack(side=TOP, fill=BOTH, expand=0)

    qf = Frame(quote_win)
    qf.config(pady=10)
    qf.pack(side=BOTTOM, fill=BOTH, expand=1)

    search_entry = StringVar()
    search_box = Entry(qs,
                       textvariable=search_entry,
                       font=("Helvetica", 11, "bold"))
    search_box.bind('<Return>', do_search)
    search_box.pack(side=LEFT, fill=BOTH, expand=1, ipadx=60)
    Button(qs,
           command=lambda: retrieveData(t="quotes", book=profile.book_id),
           text="Reset").pack(side=RIGHT)
    Button(qs, command=do_search, text="Search Quotes").pack(side=RIGHT)

    scroll_quote = Scrollbar(qf, orient=VERTICAL)
    quote_box = treectrl.MultiListbox(qf,
                                      yscrollcommand=scroll_quote.set,
                                      font=(
                                          "Helvetica",
                                          11,
                                      ))
    scroll_quote.config(command=quote_box.yview, highlightbackground="#fff")
    scroll_quote.pack(side=RIGHT, fill=Y)
    quote_box.pack(fill=BOTH, expand=1)

    quote_box.config(selectcmd=show_quote,
                     selectmode='extended',
                     columns=('Location', 'Quote'),
                     expandcolumns=[1],
                     width=900,
                     height=500)
    [[
        quote_box.column_configure(quote_box.column(x),
                                   arrow='down',
                                   arrowgravity='right')
    ] for x in range(2)]
    quote_box.notify_install('<Header-invoke>')
    #quote_box.notify_bind('<Header-invoke>', lambda event: quote_box.sort(column=event.column, mode='increasing'))
    quote_box.notify_bind('<Header-invoke>',
                          lambda event, t=quote_box: sort_column(event, t))
    quote_box.colors = ('white', '#ffdddd', 'white', '#ddeeff')
    [[
        quote_box.column_configure(quote_box.column(x),
                                   itembackground=quote_box.colors)
    ] for x in range(2)]

    quote_box.sorting_order = {0: 'increasing', 1: 'increasing'}

    retrieveData(t="quotes", book=profile.book_id)
Exemplo n.º 20
0
    def createTree(self):
        self.win = Pmw.Dialog(self.master,
                              title='Select downloaded results',
                              buttons=('OK', 'Cancel'),
                              command=self.close)
        #pathlabel = Tkinter.StringVar(value=hf.truncateName(self.RESULTS_LOCATION, 55))

        self.treeObj = TkTreectrl.ScrolledTreectrl(self.win.interior())
        self.treeObj.pack(expand=1, fill='both', padx=5, pady=3)
        self.tree = self.treeObj.treectrl
        #self.itemToName = { TkTreectrl.ROOT : self.history }
        #self.nameToItem = { self.history : TkTreectrl.ROOT }
        self._treeStyles = {}

        # checkbox
        self.tree.state_define('Checked')

        self._checkedIcon = check = \
            Tkinter.PhotoImage(master=self.master,
            data=('R0lGODlhDQANABEAACwAAAAADQANAIEAAAB/f3/f39',
                   '////8CJ4yPNgHtLxYYtNbIbJ146jZ0gzeCIuhQ53N',
                   'JVNpmryZqsYDnemT3BQA7'))
        self._unCheckedIcon = uncheck = \
            Tkinter.PhotoImage(master=self.master,
            data=('R0lGODlhDQANABEAACwAAAAADQANAI',
            'EAAAB/f3/f39////8CIYyPNgHtLxYYtNbIrMZTX+l9WThwZAmSppqGmADHcnRaBQA7'))

        el_image = self.tree.element_create(type='image',
                                            image=(check, 'Checked', uncheck,
                                                   ()))
        self.checkboxStyle = styleCheckbox = self.tree.style_create()
        self.tree.style_elements(styleCheckbox, el_image)

        self.tree.style_layout(styleCheckbox, el_image, padx=9, pady=2)
        self.treecol = self.tree.column_create(text='Results')
        self.tree.configure(treecolumn=self.treecol,
                            showbuttons=1)  #, expand=1)

        self.checkcol = self.tree.column_create(text='Select', expand=0)

        self._prjIcon = prjIcon = self._ICON_prj
        self._expIcon = expIcon = self._ICON_exp
        #self.tree.column_create(text='results URL', expand=0)
        # style for project
        styleProject = self.tree.style_create()
        pel_image = self.tree.element_create(type=TkTreectrl.IMAGE,
                                             image=(prjIcon, TkTreectrl.OPEN,
                                                    prjIcon, ''))

        pel_text = self.tree.element_create(type=TkTreectrl.TEXT,
                                            fill=('white',
                                                  TkTreectrl.SELECTED))
        pel_select = self.tree.element_create(type=TkTreectrl.RECT,
                                              showfocus=1,
                                              fill=('blue4',
                                                    TkTreectrl.SELECTED))
        self.tree.style_elements(styleProject, pel_image, pel_select, pel_text)
        self.tree.style_layout(styleProject, pel_image, pady=1)
        self.tree.style_layout(styleProject,
                               pel_select,
                               union=(pel_text, ),
                               padx=1,
                               pady=1,
                               squeeze='')
        self.tree.style_layout(styleProject,
                               pel_text,
                               padx=1,
                               pady=1,
                               ipadx=2,
                               ipady=2)  #, squeeze='y')
        self._treeStyles['prj'] = {
            'img': pel_image,
            'txt': pel_text,
            'style': styleProject
        }

        # style for jobs
        styleJob = self.tree.style_create()
        job_image = self.tree.element_create(type=TkTreectrl.IMAGE,
                                             image=(expIcon, TkTreectrl.OPEN,
                                                    expIcon, ''))
        self.tree.style_elements(styleJob, job_image, pel_select, pel_text)
        self.tree.style_layout(styleJob,
                               pel_select,
                               union=(pel_text, ),
                               padx=1,
                               pady=1,
                               ipadx=1,
                               ipady=1)  #, squeeze='y')
        self.tree.style_layout(styleJob, job_image, pady=2)
        self._treeStyles['job'] = {
            'img': job_image,
            'txt': pel_text,
            'style': styleJob
        }

        # style for string cell
        styleString = self.tree.style_create()
        cel_text = self.tree.element_create(type=TkTreectrl.TEXT,
                                            fill=('white',
                                                  TkTreectrl.SELECTED))
        self.tree.style_elements(styleString, pel_select, cel_text)
        self.tree.style_layout(styleString,
                               cel_text,
                               padx=1,
                               pady=1,
                               squeeze='y')
        self.tree.style_layout(styleString,
                               pel_select,
                               union=(cel_text, ),
                               padx=1,
                               pady=1,
                               ipadx=1,
                               ipady=1)

        self._treeStyles['cell'] = {'txt': cel_text, 'style': styleString}

        # bindings
        self.tree.notify_bind('<Expand-before>', self.expand)
        self.tree.notify_generate('<Expand-before>', item=TkTreectrl.ROOT)
        self.tree.bind('<ButtonRelease-1>', self.on_button1)
        self.win.activate()
Exemplo n.º 21
0
    def makeInterfaceSsh(self):
        """ """
        bset = {
            'bg': '#969b9d'
        }  # 'width' : 22, 'height': 22, 'relief' : 'raised'}
        bset = {}
        bset.update(self.BORDER)
        self.resetFrame()
        self.recGroup = Pmw.Group(self.frame,
                                  tag_text='Accepted structures [ 0 ]',
                                  tag_font=self.FONTbold)

        # toolbar
        toolb = tk.Frame(self.recGroup.interior())

        if self.sysarch == 'Windows':
            bwidth = 54
        else:
            bwidth = 32
        ###### add button
        # make button
        b = tk.Button(toolb,
                      text='Add...',
                      compound='top',
                      image=self._ICON_add,
                      width=bwidth,
                      font=self.FONTbold,
                      **bset)
        b.pack(anchor='n', side='top')
        # make menu items
        addrec_items = [
            ['Add receptors'],
            ['Import files...', 'normal', self.openfiles],
            [],
            ['Scan directory...', 'normal', self.opendir],
            [
                'Scan directory (recursively)...', 'normal',
                self.opendir_recursive
            ],
            # [],
            # ['Select structure from history...', 'normal', self.opendir],
        ]
        # make menu
        menu = rb.RacMenu(b, addrec_items, toolbar=toolb)

        ###### add button
        # make button
        b = tk.Button(toolb,
                      text='Remove...',
                      compound='top',
                      image=self._ICON_rem,
                      width=bwidth,
                      font=self.FONTbold,
                      **bset)
        b.pack(anchor='n', side='top', pady=1)
        # make menu items
        addrec_items = [
            ['Remove receptors'],
            ['Remove selected', 'normal', self.deletefiles],
            ['Remove all', 'normal', self.deleteallfiles],
        ]
        # make menu
        menu = rb.RacMenu(b, addrec_items, toolbar=toolb)
        #
        #tk.Button(toolb, text='Settings\n&\nAlignment...', compound='top', image = self._ICON_sys, width=32,
        #    font=self.FONTbold, **bset ).pack(anchor='n', side='top',pady=1)
        toolb.pack(side='left', anchor='w', expand=0, fill='y', pady=0)

        # files manager
        self.recFileManager = TkTreectrl.ScrolledMultiListbox(
            self.recGroup.interior(), bd=2)
        self.recFileManager.listbox.config(
            bg='white',
            fg='black',
            font=self.FONT,
            columns=('name', 'chains', 'res.', 'flex_res', 'atom types',
                     'unk.types', 'filename'),
            selectmode='extended',
        )
        delkey = CallbackFunction(self.deletefiles, {'nuke': False})
        self.recFileManager.listbox.bind('<Delete>', delkey)

        self.recFileManager.pack(anchor='w',
                                 side='left',
                                 expand=1,
                                 fill='both')

        self.recGroup.pack(anchor='n', side='top', expand=1, fill='both')

        self.frame.pack(expand=1, fill='both', anchor='n', side='top')
Exemplo n.º 22
0
    def program_entry(self):
        """This is the entry point of the librairy.
            We aim here to handle everything relative to interfaces"""

        #   Organizing menu part

        # MenuBar
        menubar = tkinter.Menu(self.wind)

        # Entries
        menu1 = tkinter.Menu(menubar, tearoff=0)
        menu2 = tkinter.Menu(menubar, tearoff=0)
        menu3 = tkinter.Menu(menubar, tearoff=0)
        #    menu4 = tkinter.Menu()

        # Preparing image files
        about_us_img_path = path.join(path_to_bundle, 'about_us_r.png')
        delete_img_path = path.join(path_to_bundle, 'delete_r.png')
        create_new_img_path = path.join(path_to_bundle, 'create_new_r.png')
        save_img_path = path.join(path_to_bundle, 'save_r.png')
        cancel_img_path = path.join(path_to_bundle, 'cancel_r.png')
        quit_img_path = path.join(path_to_bundle, 'exit_r.png')
        #    img = Image.open("new_file1.png")
        about_us_img = ImageTk.PhotoImage(file=about_us_img_path)
        delete_img = ImageTk.PhotoImage(file=delete_img_path)
        create_new_img = ImageTk.PhotoImage(file=create_new_img_path)
        save_img = ImageTk.PhotoImage(file=save_img_path)
        cancel_img = ImageTk.PhotoImage(file=cancel_img_path)
        quit_img = ImageTk.PhotoImage(file=quit_img_path)

        ##    im = gtk.Image()

        # adding entries to Menus
        menu1.add_command(label="    creer",
                          image=create_new_img,
                          compound="left",
                          command=self.create_book)
        menu1.add_command(label="    enregistrer",
                          image=save_img,
                          compound="left",
                          command=self.confirm_save)
        menu1.add_command(label="    annuler",
                          image=cancel_img,
                          compound="left",
                          command=self.cancel_without_saving)
        menu1.add_separator()
        menu1.add_command(label="    quitter",
                          image=quit_img,
                          compound="left",
                          command=self.confirm_exit)

        menu2.add_command(label="    supprimer",
                          image=delete_img,
                          compound="left",
                          command=self.confirm_delete)

        menu3.add_command(label="    A propos",
                          image=about_us_img,
                          compound="left",
                          command=self.who_are_we)

        # adding menus to menubar
        menubar.add_cascade(label="fichier", menu=menu1)
        menubar.add_cascade(label="edition", menu=menu2)
        menubar.add_cascade(label="aide", menu=menu3)

        self.wind.config(menu=menubar)

        #   Body part

        l_frame = tkinter.LabelFrame(
            self.wind, text="Renseignements du livre")  # , bg="blue")
        l_frame.grid(row=1, column=1, pady=10, padx=20, sticky="NEWS")
        l_frame.grid_rowconfigure(1, weight=1)
        l_frame.grid_columnconfigure(1, weight=1)

        tkinter.Label(l_frame,
                      text="Numero d'enregistrement:").grid(row=1,
                                                            column=1,
                                                            sticky="E",
                                                            padx=5,
                                                            pady=5)
        tkinter.Label(l_frame, text="Nom : ").grid(row=2,
                                                   column=1,
                                                   sticky="E",
                                                   padx=5,
                                                   pady=5)
        tkinter.Label(l_frame, text="Auteur : ").grid(row=3,
                                                      column=1,
                                                      sticky="E",
                                                      padx=5,
                                                      pady=5)
        tkinter.Label(l_frame, text="Prix : ").grid(row=4,
                                                    column=1,
                                                    sticky="E",
                                                    padx=5,
                                                    pady=5)
        tkinter.Label(l_frame, text="ISBN : ").grid(row=5,
                                                    column=1,
                                                    sticky="E",
                                                    padx=5,
                                                    pady=5)
        tkinter.Label(l_frame, text="Classe : ").grid(row=6,
                                                      column=1,
                                                      sticky="E",
                                                      padx=5,
                                                      pady=5)
        # frame for the 2 button radios
        l_frame_2 = tkinter.LabelFrame(l_frame, borderwidth=0)
        l_frame_2.grid(row=7, column=1, sticky="E", padx=5, pady=5)

        self.status = tkinter.StringVar()
        pret_rbtn = tkinter.Radiobutton(l_frame_2,
                                        text="En Pret",
                                        variable=self.status,
                                        value=self.BOOK_LEND)
        pret_rbtn.grid(row=0, column=0, sticky="W", padx=5, pady=5)
        dispo_rbtn = tkinter.Radiobutton(l_frame_2,
                                         text="Disponible",
                                         variable=self.status,
                                         value=self.BOOK_AVAILABLE)
        dispo_rbtn.grid(row=1, column=0, sticky="W", padx=5, pady=5)
        dispo_rbtn.select()
        tkinter.Label(l_frame, text="Mle du Preteur : ").grid(row=8,
                                                              column=1,
                                                              sticky="E",
                                                              padx=5,
                                                              pady=5)

        # global status
        self.book_reg_num = tkinter.Entry(l_frame, width=30)
        self.book_reg_num.grid(row=1, column=2, sticky="W", padx=25, pady=5)
        self.book_name = tkinter.Entry(l_frame, width=30)
        self.book_name.grid(row=2, column=2, sticky="W", padx=25, pady=5)
        self.book_author = tkinter.Entry(l_frame, width=30)
        self.book_author.grid(row=3, column=2, sticky="W", padx=25, pady=5)
        self.book_price = tkinter.Entry(l_frame, width=30)
        self.book_price.grid(row=4, column=2, sticky="W", padx=25, pady=5)
        self.book_isbn = tkinter.Entry(l_frame, width=30)
        self.book_isbn.grid(row=5, column=2, sticky="W", padx=25, pady=5)
        r_classes = classes[::-1]  # Reverse the list values for display
        self.book_classe_spbox = tkinter.Spinbox(l_frame,
                                                 width=28,
                                                 values=r_classes,
                                                 textvariable=self.classes_t_v)
        self.book_classe_spbox.grid(row=6,
                                    column=2,
                                    sticky="W",
                                    padx=25,
                                    pady=5)
        self.user_number = tkinter.Entry(l_frame, width=30)
        self.user_number.grid(row=8, column=2, sticky="W", padx=25, pady=10)

        l_frame_right = tkinter.LabelFrame(
            self.wind, text="Prytanee Militaire de Bembereke")  # , bg="red")
        l_frame_right.grid(row=1, column=2, sticky="W", padx=(55, 15), pady=10)

        logo_image_path = path.join(path_to_bundle, 'logo_pmb_1.jpg')
        logo_image = ImageTk.PhotoImage(file=logo_image_path)

        canevas = tkinter.Canvas(l_frame_right,
                                 bg="red",
                                 width=200,
                                 height=263)
        canevas.create_image(102, 133, image=logo_image)
        canevas.grid(row=1, column=1, sticky="W", padx=20)

        save_btn = tkinter.Button(l_frame_right,
                                  text="Enregistrer",
                                  command=self.confirm_save)
        save_btn.grid(row=3, column=1, padx=20, pady=20)

        # drawing the canvas
        # logo's gray : #FC902E
        # logo's blue : #BBE7EA
        bottom_full_canvas = tkinter.Canvas(self.wind, height=25)
        bottom_full_canvas.grid(row=3,
                                columnspan=2,
                                column=1,
                                sticky="W",
                                padx=20,
                                pady=20)
        # bottom_canvas.create_line(0, 2, 780, 2)

        bottom_canvas = tkinter.Canvas(bottom_full_canvas, bg="#BBE7EA")
        bottom_canvas.pack(side=tkinter.LEFT, fill=tkinter.Y)

        # drawing canvas containing search bar
        search_canvas = tkinter.Canvas(bottom_canvas, bg="#FC902E")
        search_canvas.pack(fill="x", padx=10, pady=5)
        self.auth_chbtn = tkinter.Checkbutton(search_canvas,
                                              text="Auteur",
                                              bg="#FC902E",
                                              variable=self.is_author_checked)
        self.auth_chbtn.grid(row=1, column=1, padx=5, pady=5)
        self.auth_spbox = tkinter.Spinbox(search_canvas, values=authors)
        self.auth_spbox.grid(row=1, column=2, padx=5, pady=5)
        self.price_chbtn = tkinter.Checkbutton(search_canvas,
                                               text="Prix",
                                               bg="#FC902E",
                                               variable=self.is_price_checked)
        self.price_chbtn.grid(row=1, column=3, padx=5, pady=5)
        self.price_spbox = tkinter.Spinbox(search_canvas,
                                           values=prices,
                                           width=10)
        self.price_spbox.grid(row=1, column=4, padx=5, pady=5)
        self.user_chbtn = tkinter.Checkbutton(search_canvas,
                                              text="Preteur",
                                              bg="#FC902E",
                                              variable=self.is_user_checked)
        self.user_chbtn.grid(row=1, column=5, padx=5, pady=5)
        self.pret_spbox = tkinter.Spinbox(search_canvas,
                                          values=users,
                                          width=10)
        self.pret_spbox.grid(row=1, column=6, padx=5, pady=5)
        self.classe_chbtn = tkinter.Checkbutton(
            search_canvas,
            text="Classe",
            bg="#FC902E",
            variable=self.is_classe_checked)
        self.classe_chbtn.grid(row=1, column=7, padx=5, pady=5)
        self.classe_spbox = tkinter.Spinbox(search_canvas,
                                            values=classes,
                                            width=10)
        self.classe_spbox.grid(row=1, column=8, padx=5, pady=5)
        self.dispo_chbtn = tkinter.Checkbutton(search_canvas,
                                               text="Dispo",
                                               bg="#FC902E",
                                               variable=self.is_dispo_checked)
        self.dispo_chbtn.grid(row=1, column=9, padx=5, pady=5)
        search_image_path = path.join(path_to_bundle, 'search_r.png')
        search_img = ImageTk.PhotoImage(file=search_image_path)
        self.search_label = tkinter.Label(search_canvas,
                                          image=search_img,
                                          bg="#FC902E")
        self.search_label.grid(row=1, column=10, padx=5, pady=5, sticky="news")
        self.search_label.bind("<Button-1>", func=self.search_books)

        # drawing canvas for result columns names
        columns_names_canvas = tkinter.Canvas(bottom_canvas, bg="#FC902E")
        columns_names_canvas.pack(fill="x", padx=10, pady=5)

        # Handling it with multiListbox
        columns_tuple = ('N°', 'NOM', 'AUTEUR', 'PRIX', 'CLASSE', 'DISPO',
                         'DATE DE PRET', 'UTILISATEUR')
        self.mlb = TkTreectrl.MultiListbox(columns_names_canvas,
                                           columns=columns_tuple,
                                           selectcmd=self.on_item_selected)
        ##        self.mlb.grid(column=1, row=1, columnspan=100)
        self.mlb.pack(fill=tkinter.BOTH, expand=1)
        self.mlb.focus_set()

        # adding scrollbar to the canvas containing results and linking it to every listbox
        scroll_canvas = tkinter.Canvas(bottom_full_canvas, bg="#bbaaaa")
        scroll_canvas.pack(side=tkinter.RIGHT, fill=tkinter.Y)

        self.scrollbar = tkinter.Scrollbar(scroll_canvas)
        self.scrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)

        self.scrollbar.config(command=self.vscrolling)
        self.mlb.config(yscrollcommand=self.scrollbar.set)
        self.wind.mainloop()