如何控制gtk.IconView中的选择?

时间:2011-10-08 16:32:32

标签: python gtk pygtk

我想更改gtk.IconView选择框的不透明度或颜色(我希望实际上让选择更加明显)。

我注意到gtk.IconView窗口小部件的样式属性selection-box-alpha& selection-box-color但只能阅读。

set_select_function()类的gtk.TreeSelection方法可以用来做我想要的但它用于gtk.TreeView并且我找不到gtk.IconView的等价物}

那么,当用户选择或取消选择内容时,如何控制选择并执行操作呢?

编辑: 实际上,更改selection-box-alphaselection-box-color样式属性的值不是解决方案。 我真的不想改变选择框的不透明度,而是改变pixbuf的“不透明度”(通过与颜色合成)。 因此,对于set_select_function小部件,我需要gtk.IconView的等效方法。

2 个答案:

答案 0 :(得分:1)

您可以通过实现根据选择状态绘制像素图的自定义gtk.CellRenderer来设置像素图不透明度,并将gtk.IconView的默认单元格渲染器替换为您自己的。{/ p>

答案 1 :(得分:1)

实际上,我们需要将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