Как создать Gtk Iconview с пользовательским CellRendererText

Я изучаю, как создать в Python (2.7 или выше) GtkIconView с пользовательским CellRendererText для текстового элемента IconView.

Причина этого в том, что мне нужно переопределить определенные свойства во время создания значков.

Оглядевшись, я нашел этот пример для PyGtk для TreeViews - похоже, но мне нужен пример самоанализа для IconView.

Я просмотрел документацию по С++, но я действительно не понимаю, как назначить текст ячейки для IconView.

Опять же, я нашел некоторую документацию по python для создания пользовательского рендерера ячеек для древовидной структуры.

Может ли кто-нибудь указать мне правильное направление, как изменить пример для IconView


person fossfreedom    schedule 04.01.2013    source источник


Ответы (2)


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)

Я не знаю, работает ли это, но я бы поступил именно так.

person ptomato    schedule 04.01.2013

Официальный способ — использовать set_cell_data_func.

Однако в контексте IconView это делается иначе, чем в случае с TreeView (где вы просто передаете пользовательскую функцию рендеринга экземпляру TreeViewColumn).

Это меня тоже смутило, пока я не нашел этот фрагмент в привязках GTK3 Ruby, где Kouhei Sutou демонстрирует использование интерфейса GtkCellLayout для настройки средств визуализации ячеек в IconView.

ПРИМЕЧАНИЕ. Если вы ранее настраивали свои столбцы с помощью установщиков, таких как iconView.text_column = TEXT_IDX, вам следует удалить их, как только ваш пользовательский модуль визуализации будет установлен, иначе вы увидите повторяющиеся текстовые метки.

person Arnaud Meuret    schedule 17.02.2017