Définir la couleur de premier plan CellRendererText lorsqu'une ligne est mise en évidence
-
26-09-2019 - |
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é?
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.