Conjunto CellRendererText color de primer plano cuando se resalta una fila
-
26-09-2019 - |
Pregunta
Cuando tengo un gtk.CellRendererText
, puedo asociar su color foreground
con una de las columnas de la tienda de árbol, y establecer el atributo foreground-set
en True, para cambiar el color del texto en esa columna. Sin embargo, cuando se selecciona la fila con la columna de color, el color desaparece, y es el mismo que el color de cualquier celda seleccionada. ¿Cómo puedo cambiar el color cuando está seleccionado?
Solución
He tenido el mismo problema y, después de probar diferentes alternativas, utilizando la propiedad markup
lugar de la propiedad text
resuelto el problema. A continuación y con el ejemplo que funciona en 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()
En una vista de árbol más compleja con las múltiples columnas que estoy trabajando, la propiedad markup
no parece trabajo cuando la fila no se selecciona. De todos modos, el uso de ambas propiedades markup
y foreground
al mismo tiempo parece muy bien el trabajo.