我正在为Gedit插件编写一些代码。我正在使用Python,界面(显然)是GTK。
所以,我遇到的问题很简单:我有一个搜索框(gtk.Entry),就在下面我有一个结果框(gtk.TreeView)。在搜索框中输入内容后,您会看到一堆结果,我希望用户能够按向上/向下键选择一个,按Enter键选择它,然后完成。事实上,我似乎无法找到将Up / Down按键转发到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忽略了。有什么想法吗?
先谢谢大家。
答案 0 :(得分:1)
您是否在允许小部件接收的事件列表中包含key-press-event
?你可以通过调用
browser.add_events(gtk.gdk.KEY_PRESS_MASK)
答案 1 :(得分:1)
对这个问题不是一个正确的答案(我不知道如何转发按键),但是你的问题有另一种解决方案。
直接操作TreeView光标/选择,例如:
path, column = browser.get_cursor()
browser.set_cursor((path[0] + 1,)) # Down