Python:从另一个小部件中获取gtk.treeview选择

时间:2013-08-10 09:19:26

标签: python gtk pygtk

看起来获取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_callback致电tree_selection.connect('changed', ...)(似乎没有返回所有行数据......?)或换句话说,如何传递treeview和{ {1}}回调?

1 个答案:

答案 0 :(得分:1)

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

目前还不清楚为什么要将树视图传递给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