Question

Quand j'ai un gtk.CellRendererText, je peux associer sa couleur foreground avec l'une des colonnes du magasin d'arbre, et définir l'attribut foreground-set sur True, pour changer la couleur du texte dans cette colonne. Cependant, lorsque la ligne avec la colonne de couleur est sélectionné, sa couleur disparaît et est la même que la couleur de toute cellule sélectionnée. Comment puis-je changer la couleur quand il est sélectionné?

Était-ce utile?

La solution

J'ai eu le même problème et, après avoir essayé différentes alternatives, en utilisant la propriété markup au lieu de la propriété text résolu le problème. S'il vous plaît trouverez ci-dessous et par exemple que les travaux dans 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()

Dans un complexe TreeView plus avec les multiples colonnes que je travaille, la propriété markup ne semble pas fonctionner lorsque la ligne est pas sélectionnée. Quoi qu'il en soit, l'utilisation des deux propriétés markup et foreground en même temps semble fonctionner très bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top