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]