How to create GTK ComboBox with images in Python?

How to create a ComboBox that displays a list of entries, each of which contains some text and an icon?

I use Python and GTK3 with introspection of GObject.

+2
source share
2 answers

Here is an example of how to do this, inspired by this answer for C.

from gi.repository import Gtk from gi.repository import GdkPixbuf store = Gtk.ListStore(str, GdkPixbuf.Pixbuf) pb = GdkPixbuf.Pixbuf.new_from_file_at_size("picture.png", 32, 32) store.append(["Test", pb]) combo = Gtk.ComboBox.new_with_model(store) renderer = Gtk.CellRendererText() combo.pack_start(renderer, True) combo.add_attribute(renderer, "text", 0) renderer = Gtk.CellRendererPixbuf() combo.pack_start(renderer, False) combo.add_attribute(renderer, "pixbuf", 1) window = Gtk.Window() window.add(combo) window.show_all() window.connect('delete-event', lambda w, e: Gtk.main_quit()) Gtk.main() 
+5
source

The same example in GTK2, inspired by your code:

 import pygtk pygtk.require('2.0') import gtk import gtk.gdk import gobject import gc store = gtk.ListStore(str, gtk.gdk.Pixbuf) pb = gtk.gdk.pixbuf_new_from_file("picture.png") store.append(["Test", pb]) combo = gtk.ComboBox(store) renderer = gtk.CellRendererText() combo.pack_start(renderer, True) combo.add_attribute(renderer, "text", 0) renderer = gtk.CellRendererPixbuf() combo.pack_start(renderer, False) combo.add_attribute(renderer, "pixbuf", 1) window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.add(combo) window.show_all() window.connect('delete-event', lambda w, e: gtk.main_quit()) gtk.main() 
+2
source

All Articles