【问题标题】:PYGTK redirect event to TreeViewPYGTK 重定向事件到 TreeView
【发布时间】:2011-07-10 00:45:59
【问题描述】:

在 PyGTK 中,我有一个 Entry 和一个 TreeView。当 TreeView 获得焦点时,关键事件(Up、Down、PageUp、PageDown)以某种方式移动视图中的选择。我想在 Entry 获得焦点时拦截这些关键事件,并将它们重定向到 TreeView,以便移动选择,就像 TreeView 获得焦点一样。

我可以拦截 Entry 上的按键事件并确定它是否用于我需要的键,但我无法将其传递给 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 处理事件,就好像在获得焦点时按下了键一样?

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

感谢任何帮助。

【问题讨论】:

    标签: events pygtk


    【解决方案1】:

    这样的事情应该可以工作:

        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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多