如何使用自定义CellRendererText创建Gtk Iconview

时间:2013-01-04 00:10:55

标签: python gtk3 gio

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

原因是我需要在iconview创建过程中覆盖某些属性。

环顾四周,我发现了TreeViews的PyGtk示例 - 类似但我需要一个IconView的Introspection示例

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

我再次找到一些python文档来为树视图创建自定义cellrenderer

任何人都可以指出我正确的方向如何修改IconView的示例

2 个答案:

答案 0 :(得分: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)

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

答案 1 :(得分:1)

正式的方法是使用set_cell_data_func

然而,在IconView的上下文中,它与TreeView案例(您只需将自定义呈现函数传递给TreeViewColumn实例)的方式不同。

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

注意:如果您之前使用iconView.text_column = TEXT_IDX等设置器设置了列,则应在自定义渲染器到位后删除它们,否则您将看到重复的文本标签。< / p>