修改 PyGObject 中所有 TreeView 项的背景

Modify background of all TreeView items in PyGObject

我想在 Gtk.TreeView 中为我的项目设置不同的颜色(默认情况下)。下面的示例代码无效。背景保持白色。

#!/usr/bin/env python3

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

class MyTree(Gtk.TreeView):
    def __init__(self):
        Gtk.TreeView.__init__(self)

        # color
        color = Gdk.RGBA(221, 29, 157, 1)

        # model
        model = Gtk.TreeStore(int)
        for i in range(4):
            model.append(None, [i])
        self.set_model(model)

        # column
        ren = Gtk.CellRendererText(background_set=True,
                                   background_rgba=color)
        col = Gtk.TreeViewColumn('int', ren)
        col.add_attribute(ren, 'text', 0)
        self.append_column(col)


class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        tree = MyTree()
        self.add(tree)
        self.connect('destroy', Gtk.main_quit)


if __name__ == '__main__':
    win = MyWindow()
    win.show_all()
    Gtk.main()

这只是一个 "bug"。我用错了 Gdk.RGBA() 。它的参数只在0.01.0之间有效。

color = Gdk.RGBA(.2, .9, .15, 1)