Я могу ошибаться, но я думаю, что set_active_id
является новым в GTK + 3, а PyGTK - это GTK + 2. Если вы хотите использовать GTK + 3, вам нужно переключиться на PyGObject .
Но если вы застряли на PyGTK, вы можете легко обойти его, выполнив что-то вроде этого:
import gtk
def set_active_name(combobox, col, name):
liststore = combobox.get_model()
for i in xrange(len(liststore)):
row = liststore[i]
if row[col] == name:
combobox.set_active(i)
window = gtk.Window()
window.connect("destroy", gtk.main_quit)
liststore = gtk.ListStore(int, str)
liststore.append([0, 'Jack'])
liststore.append([1, 'Emily'])
liststore.append([2, 'Paul'])
combobox = gtk.ComboBox()
cell = gtk.CellRendererText()
combobox.pack_start(cell)
combobox.add_attribute(cell, 'text', 1)
combobox.set_model(liststore)
set_active_name(combobox, 1, 'Paul')
window.add(combobox)
window.show_all()
gtk.main()
Я не уверен, есть ли более элегантный / эффективный способ, но это работает по крайней мере.