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

发布于 2024-12-08 17:12:10 字数 589 浏览 2 评论 0原文

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

我注意到 gtk.IconView 小部件具有样式属性 selection-box-alpha & selection-box-color 但只能用于阅读。

gtk.TreeSelection 类的 set_select_function() 方法对于执行我想要的操作很有用,但它用于 gtk.TreeView 和我还没有找到 gtk.IconView 的等效项

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

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

I want to change the opacity or color of a gtk.IconView select box (I want actually to make the selection more visible).

I noticed that the gtk.IconView widget had style properties selection-box-alpha & selection-box-color but only accessible for reading.

The set_select_function() method of the gtk.TreeSelection class would have been useful to do what I want but it's used for a gtk.TreeView and I haven't found an equivalent for gtk.IconView

So, how can I do to have control over the selection and perform an action when the user select or unselect stuff ?

Edit :
In fact, change the values of selection-box-alpha and selection-box-color style properties wouldn't be a solution.
I don't really want to change the selection box opacity but the "opacity" of the pixbuf (by compositing with a color).
So, I need an equivalent method of set_select_function for a gtk.IconView widget.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉薄对峙 2024-12-15 17:12:10

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

You might be able to set the pixmap opacity by implementing a custom gtk.CellRenderer that draws the pixmap according to the selection state, and replacing the gtk.IconView's default cell renderer with your own.

只是一片海 2024-12-15 17:12:10

事实上,我们需要用具有 follow-state 属性的 gtk.CellRendererPixbuf 替换 gtk.IconView 的默认单元格渲染器

。默认单元格渲染器,使用 gtk.IconView 继承的 gtk.CellLayout 类。

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

In fact, we need to replace the gtk.IconView's default cell renderer by gtk.CellRendererPixbuf which have follow-state property

We replace the default cell renderer by using the gtk.CellLayout class which gtk.IconView inherits.

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文