PyGtk - активация поля со списком - PullRequest
1 голос
/ 01 ноября 2010

Если у меня есть поле со списком в 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" звонит только после выбора, а затем нажатием Enter. Я также получаю предупреждение об устаревании для gtk.Combo(), но не могу найти помощь по использованию gtk.ComboBoxEntry()

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

1 Ответ

2 голосов
/ 01 ноября 2010

Попробуйте использовать 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.

...