我正在尝试使用gtk_widget_modify_fg()更改GtkButton上显示的文本颜色,但它无效。我已经使用gtk_widget_modify_bg()成功更改了GtkButton的背景,但前景不正常。
请帮忙。
此致 -Durgesh O Mishra
答案 0 :(得分:1)
您可以使用gtk_bin_get_child获取按钮的GtkLabel子窗口小部件,然后您应该能够按照最初的计划使用gtk_widget_modify_fg更改其前景色
示例(python)可以在这里找到:How to set a Gtk2::Button's text colour
答案 1 :(得分:0)
您可以在按钮内放置GtkLabel
窗口小部件并为其添加颜色。请记住,用户喜欢与系统主题保持一致的程序。
答案 2 :(得分:0)
我也遇到了这个麻烦。 我正在使用Mono Gtk#。 事实证明,每次更改按钮文本时,它都会创建一个新的子Label部件来显示文本。 每次更改文本时,都必须更改子窗口小部件的前景色。
private void ChangeButtonTextAndColor (Button button, string text)
{
// Get forground color of the button widget to use for the label text color
var fore = button.Style.Foreground (StateType.Normal);
// Change the text - it will create a new label widget
// Note: Child will be NULL until some text is set
button.Label = text;
// Change the text color for the new label
// One color for all the different states
button.Child.ModifyFg (StateType.Insensitive, fore);
button.Child.ModifyFg (StateType.Active, fore);
button.Child.ModifyFg (StateType.Normal, fore);
button.Child.ModifyFg (StateType.Prelight, fore);
button.Child.ModifyFg (StateType.Selected, fore);
}