3

我正在研究如何在 Python(2.7 或更高版本)中创建一个 GtkIconView,该 GtkIconView 具有用于 IconView 的文本元素的自定义 CellRendererText。

这样做的原因是我需要在创建图标视图期间覆盖某些属性。

环顾四周,我发现了这个 PyGtk for TreeViews 的例子——类似,但我需要一个 IconView 的 Introspection 例子

我查看了 C++ 文档,但我真的不明白如何将 cellrenderertext 分配给 IconView。

我再次找到了一些 python 文档来为树视图创建自定义单元渲染器

谁能指出我正确的方向如何修改 IconView 的示例

4

2 回答 2

2

官方的做法是使用set_cell_data_func.

但是,在 IconView 的上下文中,它与 TreeView 的情况不同(您只需将自定义呈现函数传递给 TreeViewColumn 实例)。

这也让我感到困惑,直到我在 GTK3 Ruby 绑定中找到了这个块,其中 Kouhei Sutou 演示了使用 GtkCellLayout 接口在 IconView 中设置单元格渲染器。

NOTE: If you previously had setup your columns using setters such as iconView.text_column = TEXT_IDX, then you should remove them once your custom renderer is in place or you will see duplicate text labels.

于 2017-02-17T12:34:12.570 回答
1

Gtk.IconView继承自Gtk.CellLayout,因此您可以使用单元格布局功能来替换当前的文本渲染器。类似的东西:

renderers = iconview.get_cells()
iconview.clear()
for r in renderers:
    if not isinstance(r, Gtk.TextRenderer):
        iconview.pack_start(r)
    else:
        iconview.pack_start(my_custom_renderer)

我不知道这是否有效,但这就是我的做法。

于 2013-01-04T09:42:10.327 回答