gtkbutton字体颜色变化

时间:2010-09-18 10:23:51

标签: linux gtk

我正在尝试使用gtk_widget_modify_fg()更改GtkButton上显示的文本颜色,但它无效。我已经使用gtk_widget_modify_bg()成功更改了GtkButton的背景,但前景不正常。

请帮忙。

此致 -Durgesh O Mishra

3 个答案:

答案 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);
    }