Estou tentando alterar a cor do texto em um rótulo em tempo de execução. Eu tentei aplicar um estilo css, tentei dois métodos depreciados e nada disso funciona. Isso pode ser feito e, se não, por que algo tão simples não está disponível?
Aplicar um estilo css em tempo real funciona parcialmente: quando eu especifico
.pinkStyle {
background-color: rgb(241, 135, 135);
color: black;
}
em tempo de execução, posso ver o fundo ficar rosa. Mas o texto permanece branco.
Oh meu Deus. Estou documentando isso para que ninguém sofra como eu sofri.
Se você quiser o controle do tempo de execução do seu texto, não use em nenhuma circunstância o Glade para definir a cor do primeiro plano com Editar Atributos. Se você fizer isso, você definiu PERMANENTEMENTE a cor do texto de uma forma que nem alterações css, marcação pango ou funções depreciadas como gtk_widget_modify_fg possam tocar em tempo de execução.
Você ainda pode usar css para alterar a cor de fundo do rótulo, mas para obter a cor e o plano de fundo do próprio texto, estou usando gtk_label_set_markup com
com sucesso. DEPOIS de excluir todos os atributos de todos os meus rótulos no Glade.
GTK é um pesadelo; Eu nunca conheci nada no Linux antes que me fizesse desejar o Windows, mas isso fez isso.
GTK é feio, em parte por causa de todas as coisas obsoletas. Eles não corrigiram problemas, eles corrigiram em torno deles.
De qualquer forma, acabei de fazer isso, também está nos fóruns raspberrypi.org. err é um int, btcprice e oldprice são floats, markup e errstr são gchar.
A cor do texto é vermelha se o preço estiver caindo, verde se estiver subindo, laranja se houver um erro. g_strdup_printf() é um pouco como printf ou snprintf, mas obtém um float em uma string cuja cor muda dependendo do valor do float.
Aqui está uma variação do código acima que é uma função de retorno de chamada que responde a um clique no rótulo ( um sinal button_press_event ) e altera o texto e a cor do rótulo com base no texto atual do rótulo. Funciona bem no Raspberry Pi. Obrigado rapazes.