4

我想为我的应用程序中的所有小部件设置默认样式。我找到了这个页面并读到有set_default_style()功能。问题是我在任何地方都找不到它。

在女巫包/模块/类中我可以找到这个功能吗?有没有其他方法可以避免使用gtk.Widget.set_style()方法为每个小部件设置样式?

4

2 回答 2

6

Widget.set_default_style() 自 3.0 起已弃用。你没有提到你正在运行什么版本,但我会继续假设它是 3.x。

你想要的是一个Gtk.CSSProvider(你可以从一个字符串或一个 css 文件构建它),并将这个自定义样式提供程序附加到样式上下文。像这样的东西:

style_provider = Gtk.CssProvider ()

css = """
GtkWindow {
    background-color: #F00;
}
"""

style_provider.load_from_data (css);

Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default(), 
                                          style_provider,
                                          Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);

查看 CSSProvider 文档,了解有关确切 css 格式的更多详细信息。

编辑:实际上你在标题中提到了 pygtk——我猜这意味着 GTK+ 2.x?在那种情况下,答案不是我发布的,我真的不记得你们的老方法了。对不起。

于 2013-11-02T12:15:15.533 回答
-1

我只是偶然发现了这个,通过蛮力实验,我最终使用了:

widget2.set_style(widget.rc_get_style())

例如,请参见:

用 glade 和 pygtk 模板化溢出的内容?

不确定在这种情况下是否有帮助,但......

于 2013-12-09T06:01:08.780 回答