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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top