Python:在GtkTreeview中更改选择颜色

Python: Changing the select colour in a GtkTreeview

提问人:ikreb 提问时间:5/14/2019 最后编辑:ikreb 更新时间:5/15/2019 访问量:164

问:

我想在树视图中禁用选择颜色。所以我想用modify_base将所选颜色设置为白色。我找到了这个解决方案,但它不起作用。这是我的代码:

import gi
from gi.repository import Gdk, Gtk
gi.require_version('Gtk', '3.0')

treestore = InterfaceTreeStore()
treeview = Gtk.TreeView()
treeview.set_model(treestore)

treeview.modify_base(Gtk.StateFlags.SELECTED, Gdk.Color(red=65535, blue=65535, green=65535))
gtk3 pygtk gtktree视图

评论

0赞 Alexander Dmitriev 5/15/2019
pygtk 是 gtk 2,gtk3 标签是 gtk 3。您使用哪个版本?
0赞 ikreb 5/15/2019
我使用PyGObject中的Gtk。所以Gtk3。

答:

1赞 Alexander Dmitriev 5/15/2019 #1

自 3.0 以来,gtk_widget_modify_base 已被弃用。如果它自 3.16 以来没有被弃用,你可以使用 。它的文档指出:gtk_widget_override_background_color

如果你想改变小部件渲染其背景的方式,你应该使用自定义的CSS样式

但是,如果要禁用选择颜色,最简单的方法是取消选择。

您的信号回调可能如下所示:"changed"

def changed_cb(selection):
    model, iter = get_selected (selection)
    # if there is no selection, iter is None
    if iter is None:
        return
    # do something useful
    # now unselect
    path = model.get_path(iter)
    selection.unselect_path(path)
    path.free() # not sure if python frees it automatically