编程语言
首页 > 编程语言> > python – 在信号期间在GtkTreeView中获取新选择

python – 在信号期间在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(),我会得到正确的选择.知道怎么处理这个吗?

解决方法:

我不确定toggle-cursor-row是什么(文档令人沮丧地为空),但我认为这是错误的信号处理.

相反,您应该连接到GtkTreeSelection changed信号.它应该处理所有选择更改事件,因此您也不需要连接到其他信号.

标签:python,gtk,pygtk,gtktreeview
来源: https://codeday.me/bug/20190518/1129572.html