我想检测我的gtk.TreeView
选择何时更改,以及何时更改,以及使用此信息调用函数。到目前为止,我发现这样做的唯一方法是附加所有这些信号:
...
self.sitterView.connect("cursor-changed", self.selectionChanged)
self.sitterView.connect("unselect-all", self.selectionChanged)
self.sitterView.connect("toggle-cursor-row", self.selectionChanged)
self.sitterView.connect("select-all", self.selectionChanged)
...
def selectionChanged(self, treeview):
foo(self.sitterView.get_selection().get_selected())
然而,似乎我从回调中得到的选择是“延迟”。也就是说,它显示上一次回调完成后的选择。例如,如果我经常按CTRL +单击一行,当行从取消选择变为选中时,foo不会被选择,当行从选择变为取消选择时,将给出一个选择。如果我稍后拨打get_selection().get_selected()
,我会得到正确的选择。知道怎么处理这个吗?
答案 0 :(得分:6)
我不确定toggle-cursor-row
是做什么的(文档令人沮丧地为空),但我认为这是错误的信号。
相反,您应该连接到GtkTreeSelection changed
信号。它应该处理所有选择更改事件,因此您不需要连接到其他信号。