看起来获取 gtk.TreeView()
的选定项目的唯一方法是实际单击它:
tree_selection = self.treeview.get_selection()
tree_selection.connect('changed', self.my_callback)
self.treeview.connect('row-activated', self.my_other_callback)
但是,如果我在 TreeView 中列出文件,并且需要“文件属性”菜单项怎么办? 或者一个播放按钮,需要访问选定的文件以将文件名传递给播放器类/方法?
额外问题:如何从 tree_selection.connect('changed', ...)
调用 my_other_callback
(这似乎没有返回所有行数据.. ?)或者换句话说,如何将 treeview
和 path
传递给回调?
最佳答案
要获取 TreeView 的选择,请调用 the get_selected_rows
method gtk.TreeSelection
对象的。您可以在任何可以访问 TreeView 的地方调用它。
目前还不清楚为什么要将 TreeView 传递给 my_other_callback
,因为它是类上的一个方法,可以作为 self.treeview
访问它。但如果您无论如何都想这样做,您可以将 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
。
关于Python : Get gtk. 从另一个小部件中选择 TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18160479/