Set cellrenderertext colore di primo piano quando una riga viene evidenziata
-
26-09-2019 - |
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?
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.