Я читал некоторое время назад, что метки Gtk на самом деле не имеют собственного цвета, но они принимают любой цвет, который имеет их фоновый виджет. Я не помню источник этой части информации, но я помню решение, которое заключается в том, чтобы поместить ярлык в EventBox Gtk и изменить цвет упомянутого EventBox. Я тестировал это решение в своем проекте gtk с хорошими результатами.
Это функция, которую я использую для изменения цвета EventBox, кстати, я использую несколько более старые версии Gtk и Glade, и я использую C++, поэтому, если вы работаете с C, вы будете должны найти эквиваленты с каждой функции:
void GuiUtil::changeColor(Gtk::Widget* widget, double r, double g, double b) {
Glib::RefPtr<Gdk::Colormap> colormap = widget->get_colormap();
Glib::RefPtr<Gtk::Style> style = widget->get_style()->copy();
// STATE_NORMAL (most of the time)
{
Gdk::Color color;
color.set_rgb_p(r,g,b);
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_NORMAL, color);
}
// STATE_PRELIGHT (when mouse hovers)
{
Gdk::Color color;
color.set_rgb_p(r*0.9,g*0.9,b*0.9);
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_PRELIGHT, color);
}
// STATE_ACTIVE (when clicked)
{
Gdk::Color color;
color.set_rgb_p(r*0.8,g*0.8,b*0.8);
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_ACTIVE, color);
}
widget->set_style(style);
}
насколько я знаю, не существует способ сделать это только с поляны.