gpt4 book ai didi

python - 如何在 pygtk TreeView 中设置单个单元格的颜色?

转载 作者:太空狗 更新时间:2023-10-30 02:06:12 25 4
gpt4 key购买 nike

我有一个包含几列的 PyGtk TreeView 。在运行时,我不断添加新行。每个单元格包含一个字符串。通常,我会为每一行使用 gtk.CellRenderer,但我想根据单元格内的值设置每个单元格的背景颜色。

我尝试了几个解决方案,但似乎我必须为每个单元格创建一个 CellRenderer,设置文本属性和背景颜色。这似乎有点过大,所以我问自己是否有更好的解决方案。有什么建议吗?

最佳答案

您可以在 TreeView 数据源的额外字段中为 TreeView 单元格定义背景和前景。然后为 TreeView 列设置前景和背景属性,以从相应的数据源字段中获取它们的值。

下面是一个小例子:

import gtk

test_data = [
{ 'column0' : 'test00', 'column1' : 'test01', 'f': '#000000', 'b': '#FF00FF' },
{ 'column0' : 'test10', 'column1' : 'test11', 'f': '#FF0000', 'b': '#C9C9C9' },
{ 'column0' : 'test20', 'column1' : 'test21', 'f': '#00FF00', 'b': '#FF0000' }]

class TestWindow(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)

# create list storage
store = gtk.ListStore(str, str, str, str)
for i in test_data:
store.append([i['column0'], i['column1'], i['f'], i['b']])
treeview = gtk.TreeView(store)

# define columns
column0 = gtk.TreeViewColumn("Column 0", gtk.CellRendererText(), text=1, foreground=2, background=3)
treeview.append_column(column0)
column1 = gtk.TreeViewColumn("Column 1", gtk.CellRendererText(), text=1, foreground=2, background=3)
treeview.append_column(column1)

self.connect("destroy", lambda w: gtk.main_quit())
self.connect("delete_event", lambda w, e: gtk.main_quit())

self.add(treeview)
self.show_all()

if __name__ == "__main__":
TestWindow()
gtk.main()

希望这对你有帮助,问候

关于python - 如何在 pygtk TreeView 中设置单个单元格的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com