【发布时间】:2012-05-25 16:21:39
【问题描述】:
我正在尝试调用 Gtk3 的 GtkTreeRowReference() 函数,但没有成功。我正在尝试使用关联的 TreeView 选择设置为 MULTIPLE 模式从 ListStore 中删除多条记录。我想为选择中指向的每个ListStore 项目保存一个TreeRowReference,并使用它们来删除ListStore 项目,因为这些路径应该随着选择中较早到达的ListStore 项目被删除而更新。我在 PyGtk 2 中找到了很多使用 TreeRowReferences 的参考资料,PyGObject 的教程提到了它们的使用,但没有给出实际示例。我尝试了很多方法来调用GtkTreeRowReference(),但都没有成功。例如:
hit_rows = []
for row in range(len(self.selection.get_selected_rows()):
hit = self.selection.get_selected_rows()[row]
hit_row = Gtk.TreeRowReference(liststore, hit)
hit_rows.append(hit_row)
当我的程序遇到Gtk.TreeRowReference 行时,会产生此致命错误消息:"TypeError: function takes at most 0 arguments (2 given)"。选择中的行已经包含对ListStore 的引用,因此仅使用选择行作为参数再次尝试,但这只是抱怨该函数仍然坚持使用 0 个参数,而我试图传递 1 个参数.
我也尝试过这样的事情:
hit_rows = []
for row in range(len(self.selection.get_selected_rows())):
hit = self.selection.get_selected_rows()[row]
hit_row = hit.GtkTreeRowReference()
hit_rows.append(hit_row)
这些努力激怒了 Python 抱怨 "AttributeError: 'ListStore' object has no attribute 'GtkTreeRowReference'." 将调用更改为 TreeRowReference、Gtk_TreeRowReference 和其他几个变体产生了相同的错误消息。
谁能告诉我如何在 PyGObject/Gtk3 中使用Gtk.TreeRowReference?作为一个相对较新且经验不足的 Python 程序员,同时也是 Gtk 的新手,毫无疑问,我忽略了一些非常明显的东西,但即使经过大量互联网搜索,我也感到难过。
【问题讨论】:
-
查看 get_selected_rows() 的文档。看起来您只需要在返回的信息中的每个路径上使用 ctor。
-
谢谢,ergosys,我去看看。
-
我可以得到 get_selected_rows() 返回的 Gtk.TreePath 值。我想做的是继续做文档建议做的事情,如果有人想使用这些返回值更改 TreeModel 的内容,即将它们保存为 TreeRowReferences 以便它们在项目获取时保持有效删除或移动。
-
TreeRowReference 构造函数采用路径...这不是您需要的吗?
标签: python gtk pygtk gtk3 pygobject