Events PYGTK将事件重定向到TreeView

Events PYGTK将事件重定向到TreeView,events,pygtk,Events,Pygtk,在PyGTK中,我有一个条目和一个树视图。当树视图聚焦时,关键事件(向上、向下、向上、向下)会以某种方式移动视图中的选定内容。我想在条目被聚焦时截取这些关键事件,并将它们重定向到树视图,以便移动选择,就像树视图被聚焦一样 我可以截取条目上的按键事件,并确定它是否用于我需要的按键,但我无法将其传递到TreeView # In UI initialization self.name_entry = gtk.Entry(max=0) self.name_entry.connec

在PyGTK中,我有一个条目和一个树视图。当树视图聚焦时,关键事件(向上、向下、向上、向下)会以某种方式移动视图中的选定内容。我想在条目被聚焦时截取这些关键事件,并将它们重定向到树视图,以便移动选择,就像树视图被聚焦一样

我可以截取条目上的按键事件,并确定它是否用于我需要的按键,但我无法将其传递到TreeView

    # In UI initialization
    self.name_entry = gtk.Entry(max=0)
    self.name_entry.connect('key-press-event', self.on_key_press)

    store = self.create_store() # a simple ListStore is created here

    view = gtk.TreeView(store)
    rendererText = gtk.CellRendererText()
    column = gtk.TreeViewColumn("Name", rendererText, text=0)
    column.set_sort_column_id(0)
    view.append_column(column)
    self.tree_view = view

    # ...

def on_key_press(self, widget, event):
    if event.keyval == UP:
        self.tree_view.do_something() # ???
        return True
    # etc. for other keyvals
有没有一种方法可以让tree_view处理事件,就好像按键处于焦点状态时被按下一样

(注意:该程序是一个黑客程序;我不关心PyGTK开发的最佳实践。)


非常感谢您的帮助。

类似的方法应该可以:

    def on_key_press(self, widget, event):
        if gtk.gdk.keyval_name(event.keyval) in ("Up", "Down", "Page_Up", "Page_Down"):
            self.tree_view.grab_focus()
            self.tree_view.emit('key_press_event', event)
            self.name_entry.grab_focus()

像这样的方法应该会奏效:

    def on_key_press(self, widget, event):
        if gtk.gdk.keyval_name(event.keyval) in ("Up", "Down", "Page_Up", "Page_Down"):
            self.tree_view.grab_focus()
            self.tree_view.emit('key_press_event', event)
            self.name_entry.grab_focus()