0

我正在为 Gedit 插件编写一些代码。我正在使用 Python,界面(显然)是 GTK。

所以,我遇到的问题很简单:我有一个搜索框(一个 gtk.Entry),在下面我有一个结果框(一个 gtk.TreeView)。在您在搜索框中输入内容后,您会立即看到一堆结果,我希望用户能够按向上/向下键选择一个,然后按 Enter 选择它,然后完成。问题是,我似乎找不到将向上/向下按键转发到 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 忽略。有任何想法吗?

提前感谢人们。

4

2 回答 2

2

不是对问题的正确答案(我不知道如何转发按键),但是您的问题有另一种解决方案。

直接操作 TreeView 光标/选择,例如:

path, column = browser.get_cursor()
browser.set_cursor((path[0] + 1,)) # Down
于 2010-03-31T20:57:57.370 回答
1

您是否将 包含key-press-event在允许小部件接收的事件列表中?你可以通过调用来做到这一点

browser.add_events(gtk.gdk.KEY_PRESS_MASK)
于 2010-03-29T15:24:54.977 回答