Frage

Wenn ich eine gtk.CellRendererText habe, kann ich seine foreground Farbe mit einer der Baum speichern Spalten zuzuordnen, und stellen Sie die foreground-set Attribut auf True, die Farbe des Textes in dieser Spalte zu ändern. Wenn jedoch die Zeile mit der farbigen Spalte ausgewählt ist, seine Farbe verschwindet, und ist das gleiche wie bei jeder ausgewählten Zelle Farbe. Wie kann ich die Farbe ändern, wenn sie ausgewählt wird?

War es hilfreich?

Lösung

Ich habe das gleiche Problem hatte und nach verschiedenen Alternativen versuchen, die markup Eigenschaft verwenden, anstatt die text Eigenschaft das Problem gelöst. Bitte finden Sie unten und Beispiel, das funktioniert 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 einer komplexeren treeview mit den mehreren Spalten, dass ich arbeite, die markup Eigenschaft scheint nicht zu funktionieren, wenn die Zeile nicht ausgewählt ist. Wie auch immer, Nutzung beiden markup und foreground Eigenschaften zugleich scheint gut funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top