Domanda

Quando ho un gtk.CellRendererText, posso associare il suo colore foreground con una delle colonne del negozio albero, e impostare l'attributo foreground-set su True, per cambiare il colore del testo in quella colonna. Tuttavia, quando è selezionata la riga con la colonna colorato, il colore scompare, ed è lo stesso colore di ogni cella selezionata. Come faccio a cambiare il colore quando è selezionata?

È stato utile?

Soluzione

Ho avuto lo stesso problema e, dopo aver provato diverse alternative, utilizzando la proprietà markup invece della proprietà text risolto il problema. Di seguito riportiamo e l'esempio che le opere 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 una vista ad albero più complesso, con le più colonne che sto lavorando, la proprietà markup non sembra lavoro quando la riga non è selezionata. In ogni caso, l'utilizzo di entrambe le proprietà markup e foreground allo stesso tempo sembra funzionare bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top