【问题标题】:How to set the color of a single cell in a pygtk treeview?如何在 pygtk 树视图中设置单个单元格的颜色?
【发布时间】:2011-07-07 11:27:18
【问题描述】:

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

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

【问题讨论】:

    标签: python gtk pygtk gtktreeview cellrenderer


    【解决方案1】:

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

    下面是一个小例子:

    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() 
    

    希望这会有所帮助,问候

    【讨论】:

    • 谢谢!我希望有一个解决方案可以将数据与控制数据完全分离,但到底是什么......这足够好
    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多