Podobně jako pro jiné widgety je zdrojem dat pro gtkCombobox neviditelný widget gtkListstore.
V tomto příkladu jej vytvoříme za běhu a to s dvěma sloupci, první sloupec bude obrázek a druhý sloupec bude text.
1) S použitím šablony grafické aplikace a programu Glade vytvořte známým postupem okno, které bude obsahovat gtkComboBox jménem "combobox1".
2) Do funkce __init__, ideálně před příkaz self.w("window1").show_all(), přidejte tento kód:
## Příprava liststore
muj_liststore = gtk.ListStore(gtk.gdk.Pixbuf, str)
for name,icon in [['Plain Text','gnome-mime-text'],
['PDF', 'gnome-mime-application-pdf'],
['Postscript', 'gnome-mime-application-postscript'],
['Web Page (HTML)', 'gnome-mime-text-html'],
['JPEG', 'gnome-image-jpeg']]:
image = gtk.icon_theme_get_default().load_icon(icon,24,gtk.ICON_LOOKUP_USE_BUILTIN)
muj_liststore.append([image,name])
## Nastavení liststore s daty pro combobox1
self.w("combobox1").set_model(muj_liststore)
# U comboboxu1 přidáme renderery pro obrázek a text (viz lekce 17)
renderer = gtk.CellRendererPixbuf()
self.w("combobox1").pack_start(renderer, expand=False)
self.w("combobox1").add_attribute(renderer, 'pixbuf', 0)
renderer = gtk.CellRendererText()
self.w("combobox1").pack_start(renderer, expand=True)
self.w("combobox1").add_attribute(renderer, 'text', 1)
## Předvybrání první položky
self.w("combobox1").set_active(0)
## Přidání obsluhy událostí
self.w('combobox1').connect('changed', self.changed_cb)
Pro přidání odezvy na událost změny výběru přidejte toto (což ale už znáte):
def changed_cb(self, combobox):
model = combobox.get_model()
index = combobox.get_active()
print "Hodnota změněna na ", model[index][0]