PyGtk — Активация поля со списком

Если у меня есть поле со списком в pyGTK и я хотел бы установить список строк, а затем, щелкнув одну из них, активировать команду, как мне это сделать?

На данный момент у меня есть:

    self.combo_key = gtk.Combo()
    self.combo_key.set_popdown_strings(self.keys)
    self.combo_key.entry.set_text(db.keys()[0])
    self.combo_key.entry.connect("activate", self.key_sel)

Но "activate" звонит только после выбора, а потом по нажатию энтера. Я также получаю предупреждение об устаревании для gtk.Combo(), но не могу найти никакой помощи по использованию gtk.ComboBoxEntry()

Любая помощь, ребята?


person Fergus Barker    schedule 31.10.2010    source источник


Ответы (1)


Попробуйте использовать gtk.ComboBox вместо gtk.Combo, так как последний устарел в пользу первого. Для инициализации вы можете использовать код, например:

liststore = gtk.ListStore(gobject.TYPE_STRING)
for key in self.keys:
    liststore.append((key,))
combobox = gtk.ComboBox(liststore)
cell = gtk.CellRendererText()
combobox.pack_start(cell, True)
combobox.add_attribute(cell, 'text', 0)

Теперь вы подключаетесь к сигналу changed combobox и используете его метод get_active(), чтобы запросить выбранный элемент.

Как вы можете догадаться из этого объяснения, ComboBox создан не совсем для этой цели. Вероятно, вы захотите использовать gtk.Menu.

person Sven Marnach    schedule 31.10.2010