在信号期间获取GtkTreeView中的新选择
我想要在我的 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()
,我就能得到正确的选择。你知道该怎么解决这个问题吗?
1 个回答
7
我不太清楚 toggle-cursor-row
是干嘛用的(文档里没有任何说明,真让人烦),不过我觉得处理这个信号可能不太对。
相反,你应该连接到 GtkTreeSelection 的 changed
信号。这个信号会处理所有选择变化的事件,所以你也不需要连接其他的信号了。