When I have a gtk.CellRendererText
, I can associate its foreground
color with one of the tree store's columns, and set the foreground-set
attribute to True, to change the color of the text in that column. However, when the row with the colored column is selected, its color disappears, and is the same as any selected cell's color. How do I change the color when it's selected?
Asked
Active
Viewed 2,530 times
3
1 Answers
7
I've had the same problem and, after trying different alternatives, using the markup
property instead of the text
property solved the problem. Please find below and example that works in 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()
In a more complex treeview with the multiple columns that I'm working on, the markup
property doesn't seem to work when the row isn't selected. Anyway, usage of both markup
and foreground
properties at the same time seems to work fine.

jcollado
- 39,419
- 8
- 102
- 133
-
yeup pretty strange.. thanks a bunch though, using both works! – Claudiu Dec 06 '10 at 19:12
-
1The [PyGTK FAQ](http://faq.pygtk.org/index.py?req=show&file=faq13.031.htp) mentions "One difference between this method [markup] and the one described above [properties] is that its effect applies regardless of whether or not the row is selected or in focus." But I still wonder if it is possible without markup. – antoyo Oct 27 '16 at 21:52