代码之家  ›  专栏  ›  技术社区  ›  dguaraglia

GTK中的转发按键

  •  0
  • dguaraglia  · 技术社区  · 14 年前

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

    所以,我遇到的问题很简单:我有一个搜索框(a入口gtk)下面是一个结果框(agtk.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忽略了。有什么想法吗?

    提前感谢大家。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Johannes Sasongko    14 年前

    这个问题不是一个正确的答案(我不知道如何向前按键),但是你的问题有一个替代的解决方案。

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

    path, column = browser.get_cursor()
    browser.set_cursor((path[0] + 1,)) # Down
    
        2
  •  1
  •   ptomato    14 年前

    key-press-event 在允许小部件接收的事件列表中?你可以打电话给我

    browser.add_events(gtk.gdk.KEY_PRESS_MASK)