Python 如何在gtk.IconView中控制选择?
我想更改Python 如何在gtk.IconView中控制选择?,python,gtk,pygtk,Python,Gtk,Pygtk,我想更改gtk.IconViewselect框的不透明度或颜色(实际上我想使选择更加可见) 我注意到gtk.IconView小部件具有样式属性selection box alpha&selection box color,但只能用于阅读 gtk.TreeSelection类的set\u select\u函数()方法本来可以用来做我想做的事情,但它用于gtk.TreeView,我还没有找到与gtk.IconView 那么,当用户选择或取消选择内容时,如何控制选择并执行操作呢 编辑: 事实上,更改选
gtk.IconView
select框的不透明度或颜色(实际上我想使选择更加可见)
我注意到gtk.IconView
小部件具有样式属性selection box alpha
&selection box color
,但只能用于阅读
gtk.TreeSelection
类的set\u select\u函数()
方法本来可以用来做我想做的事情,但它用于gtk.TreeView
,我还没有找到与gtk.IconView
那么,当用户选择或取消选择内容时,如何控制选择并执行操作呢
编辑:
事实上,更改选择框alpha
和选择框颜色
样式属性的值并不是一个解决方案。
我真的不想更改选择框的不透明度,而是想更改pixbuf的“不透明度”(通过使用颜色合成)。
因此,我需要一个
gtk.IconView
小部件的set\u select\u函数的等效方法。您可以通过实现一个定制的gtk.CellRenderer
来设置pixmap不透明度,它根据选择状态绘制pixmap,并将gtk.IconView
的默认单元格渲染器替换为您自己的。事实上,我们需要将gtk.IconView
的默认单元格渲染器替换为gtk.cellRenderPixBuf
属性
我们使用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
也许这个问题是相关的:不,因为这些属性是只读的,如果我能编写它们,它们会很有用。如果我理解正确,那里的答案说你可以使用gtk_rc_parse
函数修改它们。我实际上误解了,这个问题很相关,但事实上这不是一个好的解决方案(我编辑了我的问题)。谢谢!哦,是的,gtk.cellRenderPixBuf
小部件有一个follow state
属性,并且它有一个gtk.CELL\u RENDERER\u SELECTED
常量。我来看看我能用它做些什么。ThanksI不知道如何替换gtk.IconView
的默认单元格呈现程序。创建自定义gtk.CellRenderer
是exp如果我理解正确,我需要在gtk.ListStore
中使用我的自定义gtk.CellRenderer
(而不是gtk.gdk.Pixbuf?),但我不知道如何使用,也没有找到任何示例。你有什么例子吗?我终于找到了答案,那就是。。。容易的。我将把它作为一个新答案发布。