Python : Get gtk. 从另一个小部件中选择 TreeView

标签 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)

但是,如果我在 TreeView 中列出文件,并且需要“文件属性”菜单项怎么办? 或者一个播放按钮,需要访问选定的文件以将文件名传递给播放器类/方法?

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

最佳答案

要获取 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/

相关文章:

python - 使用线程的GNOME小程序挂起

python - 我如何改进我的模型,使其能够处理数据集中没有的更多字符?

python - httpd 启动时 python 初始化过多

python - 如果先前的查询因超时而失败,我将无法使用 aiohttp session

python - PyGTK 笔记本 get_current_page() 不起作用

c - 如何使用gtk_widget_add_accelerator?

c - GTK+3 移植 : GdkDeviceAxis

python - 访问 gtk.TreeIter 里面的 render() 函数的 gtk.CellRenderer -- pygtk

python - 打开简历,img [x,y]总是返回0

python - PyGi : How to use a GTKListBox with a GTKListStore?