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()
Esempio n. 2
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()
Esempio n. 3
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)
Esempio n. 4
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')
Esempio n. 5
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()
Esempio n. 6
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()
Esempio n. 7
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('状态:准备...')
Esempio n. 8
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()
    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()
Esempio n. 10
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()