Я пишу немного кода для плагина Gedit. Я использую Python, и интерфейс (очевидно) - это GTK.Переадресация нажатий клавиш в GTK
Итак, проблема, с которой я сталкиваюсь, довольно проста: у меня есть окно поиска (gtk.Entry), а справа внизу у меня есть окно результатов (gtk.TreeView). Сразу после того, как вы напечатаете что-то в окне поиска, вам предлагается множество результатов, и я хотел бы, чтобы пользователь мог нажимать клавиши «Вверх»/«Вниз», чтобы выбрать один, «Ввод», чтобы выбрать его, и сделать это. Дело в том, что я не могу найти способ переместить вверх/вниз нажатие на TreeView. В настоящее время у меня есть этот кусок кода:
def __onSearchKeyPress(self, widget, event):
"""
Forward up and down keys to the tree.
"""
if event.keyval in [gtk.keysyms.Up, gtk.keysyms.Down]:
print "pressed up or down"
e = gtk.gdk.Event(gtk.gdk.KEY_PRESS)
e.keyval = event.keyval
e.window = self.browser.window
e.send_event = True
self.browser.emit("key-press-event", e)
return True
я могу ясно видеть я получаю правильный вид события, но событие я посылаю получает проигнорировано TreeView. Есть идеи?
Спасибо заранее.
По-видимому, призывающую self.browser.grab_focus() перед отправкой события помогает вопросы, но я все равно хочу, чтобы держать в центре внимания на в поле ввода. Все еще работаю над этим. – dguaraglia
В таком случае, можете ли вы снова «grab_focus» в записи снова? –
@ Джоханн хммм ... может быть. Я не пытался, потому что это казалось неправильным. – dguaraglia