Defina a cor do primeiro plano CellRenderReRTEXT quando uma linha é destacada
-
26-09-2019 - |
Pergunta
Quando eu tenho um gtk.CellRendererText
, Eu posso associar seu foreground
colorir com uma das colunas da loja de árvores e definir o foreground-set
atribuir a verdadeiro, para alterar a cor do texto nessa coluna. No entanto, quando a linha com a coluna colorida é selecionada, sua cor desaparece e é a mesma que qualquer cor de célula selecionada. Como altero a cor quando está selecionada?
Solução
Eu tive o mesmo problema e, depois de experimentar alternativas diferentes, usando o markup
propriedade em vez do text
A propriedade resolveu o problema. Encontre abaixo e exemplo que funciona no 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()
Em uma visão de árvore mais complexa com as várias colunas em que estou trabalhando, o markup
A propriedade não parece funcionar quando a linha não é selecionada. Enfim, uso de ambos markup
e foreground
As propriedades ao mesmo tempo parecem funcionar bem.