2

看起来获得 a 的选定项目的唯一方法gtk.TreeView()是实际单击它:

    tree_selection = self.treeview.get_selection()
    tree_selection.connect('changed', self.my_callback)
    self.treeview.connect('row-activated', self.my_other_callback)

但是,如果我在树形视图中列出文件,并且需要“文件属性”菜单项怎么办?还是播放按钮,需要访问所选文件以将文件名传递给播放器类/方法?

额外的问题:如何调用my_other_callbackfrom tree_selection.connect('changed', ...)(似乎没有返回所有行数据..?)或者换句话说,如何传递treeviewpath回调?

4

1 回答 1

1

要获得树视图的选择,请调用对象get_selected_rows方法gtk.TreeSelection您可以在任何可以访问树视图的地方调用它。

目前还不清楚为什么要将树视图传递给,my_other_callback因为它是类上的一个方法,可以将它作为self.treeview. 但是,如果您仍然想这样做,您可以将树视图(或任何其他 Python 对象)作为附加参数添加到connect

tree_selection.connect('changed', self.my_other_callback, self.treeview)

要更细粒度地控制回调的调用方式,请使用 lambda:

tree_selection.connect('changed', lambda *args: self.my_other_callback(self.treeview))

这允许您对多个信号使用相同的处理程序,而无需将处理程序声明为接受*args

于 2013-08-10T21:32:37.237 回答