如何在pyGTK中为小部件设置默认样式?

时间:2013-11-02 08:17:11

标签: python gtk pygtk

我想为我的应用程序中的所有小部件设置默认样式。我找到this page并读到有set_default_style()函数。问题是我无法在任何地方找到它。

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

2 个答案:

答案 0 :(得分:3)

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?在那种情况下答案是我发布的内容,而且我真的不记得你们已经开始的方式了。遗憾。

答案 1 :(得分:0)

我偶然发现了这一点,通过蛮力实验,我最终使用了:

widget2.set_style(widget.rc_get_style())

举个例子,见:

Templating overflowing content with glade and pygtk?

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