Pergunta

Quando eu tenho um gtk.CellRendererText, Eu posso associar seu foreground colorir com uma das colunas da loja de árvores e definir o foreground-set atribuir a verdadeiro, para alterar a cor do texto nessa coluna. No entanto, quando a linha com a coluna colorida é selecionada, sua cor desaparece e é a mesma que qualquer cor de célula selecionada. Como altero a cor quando está selecionada?

Foi útil?

Solução

Eu tive o mesmo problema e, depois de experimentar alternativas diferentes, usando o markup propriedade em vez do text A propriedade resolveu o problema. Encontre abaixo e exemplo que funciona no 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()

Em uma visão de árvore mais complexa com as várias colunas em que estou trabalhando, o markup A propriedade não parece funcionar quando a linha não é selecionada. Enfim, uso de ambos markup e foreground As propriedades ao mesmo tempo parecem funcionar bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top