当一行突出显示时设置cellrendertext前景色

当一行突出显示时设置cellrendertext前景色

问题描述:

当我有gtk.CellRendererText时,我可以将它的​​颜色与其中一个树存储的列相关联,并将foreground-set属性设置为True,以更改该列中文本的颜色。但是,当选中具有彩色列的行时,其颜色消失,并且与任何选定单元格的颜色相同。选择时如何更改颜色?当一行突出显示时设置cellrendertext前景色

我遇到了同样的问题,在尝试不同的替代方案后,使用markup属性而不是text属性解决了问题。请在下面找到并例子在Ubuntu特立独行的作品:

#!/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属性似乎不工作的时候没有选择的行。无论如何,使用markup和​​属性在同一时间似乎工作正常。

+0

yeup很奇怪..谢谢一堆,虽然使用两个作品! – Claudiu 2010-12-06 19:12:51

+0

[PyGTK常见问题解答](http://faq.pygtk.org/index.py?req=show&file=faq13.031.htp)提及“此方法[标记]和上述[属性]之间的一个区别是无论该行是选中还是焦点,其效果都适用。“但我仍然怀疑,如果没有标记是可能的。 – antoyo 2016-10-27 21:52:31