修改 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.0
和1.0
之间有效。
color = Gdk.RGBA(.2, .9, .15, 1)
我想在 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.0
和1.0
之间有效。
color = Gdk.RGBA(.2, .9, .15, 1)