【问题标题】:Set cellrenderertext foreground color when a row is highlighted突出显示行时设置单元格渲染器文本前景色
【发布时间】:2010-09-02 17:01:58
【问题描述】:

当我有一个gtk.CellRendererText 时,我可以将它的foreground 颜色与树存储的一个列相关联,并将foreground-set 属性设置为True,以更改该列中文本的颜色。 However, when the row with the colored column is selected, its color disappears, and is the same as any selected cell's color.选中后如何更改颜色?

【问题讨论】:

    标签: python gtk pygtk gtktreeview cellrenderer


    【解决方案1】:

    我遇到了同样的问题,在尝试了不同的替代方案后,使用markup 属性而不是text 属性解决了这个问题。请在下面找到适用于 Ubuntu Maverick 的示例:

    #!/usr/bin/python                               
    import gtk
    
    
    class Application(object):
        def __init__(self):
            window = gtk.Window()
    
            model = gtk.TreeStore(str)
            model.append(None, row=('Normal row',))
            model.append(None, row=('<span foreground="red">Red row</span>',))
    
            treeview = gtk.TreeView(model)
            renderer = gtk.CellRendererText()
            column = gtk.TreeViewColumn('Column', renderer, markup=0)
            treeview.append_column(column)
    
            scrolled_window = gtk.ScrolledWindow()
            scrolled_window.add(treeview)
    
            window.add(scrolled_window)
            window.connect('destroy', lambda w: gtk.main_quit())
    
            window.show_all()
    
    
        def run(self):
            gtk.main()
    
    
    if __name__ == '__main__':
        Application().run()
    

    在我正在处理的包含多个列的更复杂的树视图中,markup 属性在未选择行时似乎不起作用。无论如何,同时使用markupforeground 属性似乎工作正常。

    【讨论】:

    • 是的,很奇怪.. 非常感谢,同时使用这两种方法!
    • PyGTK FAQ 提到“此方法 [标记] 与上述方法 [属性] 之间的一个区别是,无论行是否被选中或处于焦点中,它的效果都适用。”但我仍然想知道是否可以不使用标记。
    猜你喜欢
    • 1970-01-01
    • 2011-07-30
    • 2020-01-20
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2018-06-01
    • 1970-01-01
    相关资源
    最近更新 更多