python 2.7 - Is it possible to display an Image in an autocompletion-popup list (Gtk3) -


i using entry entrycompletion opbject has liststore model. each record in model, there image display in autocomplete-popup list.

how can done? possible add gtk.cellrendererpixbuf column model?

interesting enough not find examples of yet turns out possible , not insanely complicated. lets start small image of goal uses icons convinces reasons. example of auto-completion icons

so how there, first create liststore containing column strings match on , icon-name convert pixbuf (this pixbuf directly).

    # define entries auto complete     entries = [         ('revert', 'document-revert'),         ('delete', 'edit-delete'),         ('dev help', 'devhelp'),         ]      # setup list store (note data types should match of entries)     list_store = gtk.liststore(str, str)      # fill list store     entry_pair in entries:         list_store.append(entry_pair) 

next step setting entrycompletion , linking liststore

    # create entry completion , link list store     completion = gtk.entrycompletion()     completion.set_model(list_store) 

now magic, need create 2 renderers, 1 text, 1 pixbufs. pack these in completion add columns it.

    # create renderer's pixbufs , text     image_renderer = gtk.cellrendererpixbuf.new()     cell_renderer = gtk.cellrenderertext.new()      # pack columns in completion, in case first image string     completion.pack_start(image_renderer, true)     completion.pack_start(cell_renderer, true) 

in order make sure renderers use the correct column here specify column liststore renderers should read. image_renderer set icon_name attribute give icon names. if feed pixbuf's need pixbuf instead.

    # set renderer's such read correct column     completion.add_attribute(image_renderer, "icon_name", 1)     completion.add_attribute(cell_renderer, "text", 0) 

as there no multiple column need tell completion column contains string. in our case column 0.

    # tell completion column contains strings base completion on     completion.props.text_column = 0      # create entry , link completion     entry = gtk.entry()     entry.set_completion(completion) 

and that's it!


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -