gtk3 - 如何将选定的 Gtk TreeView 行传递给 Gtk TreeStore 插入函数?

标签 gtk3 pygobject

我正在尝试向 Gtk.TreeStore 中插入一行,为此我必须从 Gtk.TreeView 传递选定的行号。我找到了 PyGTK 的解决方案,但没有找到 PyGObject 的解决方案。

对于 PyGTK,插入函数如下所示 (http://www.pygtk.org/pygtk2reference/class-gtktreestore.html#method-gtktreestore--insert):

 def insert(parent, position, row=None)

位置可以这样查询:

 treeview = Gtk.TreeView()
 selection = treeview.get_selection()
 model, iter = selection.get_selected()
 path = iter.get_selected_rows()[0]
 index = path.get_indices()[0]

但是在 PyGObject 中我得到了错误:

self.index = self.path.get_indices()[0]
AttributeError: 'LayerDataStore' object has no attribute 'get_indices'

如何获取行号的整数值?我是不是以一种奇怪的方式来解决这个问题?看起来解决方案应该更简单并且代码更少。

进一步阅读:

这是GTK3中插入函数的描述:

PyGTK 的类似问题:

C++ 的类似问题:

最佳答案

终于明白了。但我不确定是否有更简单的解决方案:

首先在 TreeView 上调用 select:

tree = Gtk.TreeView()
select = tree.get_selection()

select 就是一个 Gtk.TreeSelection。我们使用此对象调用 get_selected_rows():

selected_rows = select.get_selected_rows()

该函数返回 LayerDataStoretuple 和选择行时的 GtkTreePath。否则 GtkTreePath 是一个空列表 []

然后将 GtkTreePath 分配给一个变量:

path = selected_rows[1]

路径现在是 GtkTreePath列表,如果未选择任何内容,则为空列表[]。您可以在此处插入一个 if 函数以避免出现任何错误。

然后我们必须使用以下方法解压列表:

row = path[0]

现在变量 row 是一个 TreePath 并且 print 函数将为第一行返回 0,为第二行返回 1,依此类推。对于嵌套树,它将为第一行中的第一个嵌套对象返回 0:0,为第一行中的第二个对象返回 0:1,依此类推。

使用 get_indices 函数,我们可以将 TreePath 转换为 list:

index = row.get_indices()

打印函数现在将在第一行打印 [0],在第二行打印 [1]。第一行第一个对象的嵌套对象为[0,0],第一行第二个嵌套对象的嵌套对象为[0,1]。

因为我只对行号本身感兴趣,所以我使用此赋值来仅获取行号:

row_number = index[0]

最后将行号传递给TreeStore:

store.insert(None, row_number, [True, "New Layer")])

有用的链接:

关于gtk3 - 如何将选定的 Gtk TreeView 行传递给 Gtk TreeStore 插入函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25037271/

相关文章:

python - 使用 Python gtk3 在 X 上进行全局键绑定(bind)

python-3.x - 如何使Gtk + 3窗口全屏显示?

Python。使用 Gtk GUI 在后台做一些工作

python - PyGObject 和 Glade 将窗口发送到前面

c - 通过用户输入更新 GTK+3 中的面板

gtk3 - 如何在回调中使用结构的参数化成员函数?

perl - 如何将 PDL 图像转换为 GdkPixbuf

python - 如何让 python 识别/找到 Homebrew 软件安装的 gi.repository (PyGObjects)?

linux - 值错误 : Namespace Gtk not available

python - 如何格式化 Gtk.Entry 中的条目