【发布时间】: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 开发的最佳实践。)
感谢任何帮助。
【问题讨论】: