Как получить контроль над выбором в gtk.IconView? - PullRequest
0 голосов
/ 08 октября 2011

Я хочу изменить непрозрачность или цвет поля выбора gtk.IconView (на самом деле я хочу сделать выделение более заметным).

Я заметил, что виджет gtk.IconView имеет свойства стиля selection-box-alpha& selection-box-color но доступно только для чтения.

Метод set_select_function() класса gtk.TreeSelection был бы полезен для выполнения того, что я хочу, но он используется для gtk.TreeView, и я не нашелэквивалент gtk.IconView

Итак, как я могу контролировать выбор и выполнять действие, когда пользователь выбирает или отменяет выбор?

Редактировать: Фактически, изменить значениясвойств стиля selection-box-alpha и selection-box-color не будет решением.Я на самом деле не хочу менять прозрачность поля выделения, но "непрозрачность" pixbuf (путем компоновки с цветом).Итак, мне нужен эквивалентный метод set_select_function для gtk.IconView виджета.

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Фактически нам нужно заменить средство визуализации ячеек по умолчанию gtk.IconView на gtk.CellRendererPixbuf со свойством follow-state

Мы заменим средство визуализации ячеек по умолчанию, используя класс gtk.CellLayout, который gtk.IconView наследует.

model = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_STRING)
iconview = gtk.IconView(model)

renderer = gtk.CellRendererPixbuf()
renderer.set_property('follow-state', True)
iconview.pack_start(renderer)
iconview.set_attributes(renderer,pixbuf=1)  #pixbuf is the column number corresponding to the pixbuf to render in the model
1 голос
/ 09 октября 2011

Можно установить непрозрачность растрового изображения, внедрив пользовательский gtk.CellRenderer, который рисует растровое изображение в соответствии с состоянием выбора, и заменив средство визуализации ячеек по умолчанию gtk.IconView на свое собственное.

...