我想更改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
的等效方法。
答案 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