Set cellrenderertext Vordergrundfarbe, wenn eine Zeile markiert ist
-
26-09-2019 - |
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?
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.