python - 如何在 Python 中使用 Gtk3 GtkTreeRowReference

标签 python gtk pygtk gtk3 pygobject

我正在尝试调用 Gtk3 的 GtkTreeRowReference()功能没有任何成功。我正在尝试从 ListStore 中删除多条记录使用关联的 TreeView 的选择设置为 MULTIPLE 模式。我想保存一个TreeRowReference对于每个 ListStore选择中指向的项目并使用它们删除 ListStore项,因为这些路径应该随着选择中较早到达的 ListStore 项被删除而更新。我发现很多关于使用 TreeRowReferences 的引用资料在 PyGtk 2 和 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)

产生此 fatal error 消息:"TypeError: function takes at most 0 arguments (2 given)"当我的程序到达 Gtk.TreeRowReference线。选择中的行已包含对 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和其他几个变体产生了相同的错误消息。

谁能告诉我如何使用 Gtk.TreeRowReference在 PyGObject/Gtk3 中?作为一个相对较新且经验不足的 Python 程序员,同时也是 Gtk 的新手,毫无疑问,我忽略了一些非常明显的东西,但即使在互联网上进行了大量搜索后,我也被难住了。

最佳答案

现在(PyGObject + GTK+ 3)你必须使用 Gtk.TreeRowReference.new 而不是仅仅调用 Gtk.TreeRowReference。例如,您可以使用:

selection = treeview.get_selection()
model, paths = selection.get_selected_rows()
refs = []
for path in paths:
    refs.append(Gtk.TreeRowReference.new(model, path))

treeview之前已经定义好了。然后,你可以稍后用类似的东西仔细检查它:

for ref in refs:
    path = ref.get_path()
    iter = model.get_iter(path)
    value = model.get(iter, 0)[0]
    print '(%s, %s)' % (path, value)

在最后一部分,我假设您想要获取模型中第一列的值。

关于python - 如何在 Python 中使用 Gtk3 GtkTreeRowReference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758030/

相关文章:

python - 如何获取所有 Jenkins 变量

python - PyGTK:将一个窗口嵌入到另一个窗口中

python - 哪些 GUI 框架最适合多线程 Python 程序?

python - 使用 GTK 查找工作区大小(屏幕大小减去任务栏)

python - 即使代码已正确处理,为什么不重写文件 .txt file 中的文本?

python - 如何在不加载整个文件的情况下从 XLS 文件中获取工作表名称?

python - Argparse: "-p"或 "-p=value"但不是 "-p value"

c - 将数组传递给函数 - 不同的值 - 段错误

python - 在 gtk.ListStore 中指定字段的更好方法

python - 在 PyGTK/GtkBuilder 中处理多个窗口