2010-09-02 63 views
3

當我有gtk.CellRendererText時,我可以將它的​​顏色與其中一個樹存儲的列相關聯,並將foreground-set屬性設置爲True,以更改該列中文本的顏色。但是,當選中具有彩色列的行時,其顏色消失,並且與任何選定單元格的顏色相同。選擇時如何更改顏色?當一行突出顯示時設置cellrendertext前景色

回答

5

我遇到了同樣的問題,在嘗試不同的替代方案後,使用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