PyGtk3如何更改应用程序主题?

时间:2017-03-18 23:28:50

标签: pygtk

我尝试使用Gtk.rc_parse(“path / to / Hooli / gtk-3 / gtk.css”)代码的rc_parse方法,但它无法正常工作。这个问题很简单,但问题的解决并不容易。我怎样才能改变我的gtk apllication主题?或者我如何在我的gtk应用程序中使用自定义主题?

感谢。

2 个答案:

答案 0 :(得分:3)

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk as gtk

settings = gtk.Settings.get_default()
settings.set_property("gtk-theme-name", "Numix")
settings.set_property("gtk-application-prefer-dark-theme", False)  # if you want use dark theme, set second arg to True

# getting all existing properties #

for i in settings.list_properties():
    print(i)

这些代码在windows,linux上工作得非常正确......我希望这能解决你的问题

答案 1 :(得分:0)

您正在将旧方式与新的CSS方式混合使用。

我写了几个pygobject树的demos文件夹中的例子,最简单的就是这个:

https://git.gnome.org/browse/pygobject/tree/demos/gtk-demo/demos/Css/css_accordion.py

总之,你必须准备css:

https://git.gnome.org/browse/pygobject/tree/demos/gtk-demo/demos/data/css_accordion.css

该文件已加载到Gtk.CssProvider()

    provider = Gtk.CssProvider()
    provider.load_from_data(bytes.get_data())

由函数apply_css()

加载
def apply_css(self, widget, provider):
    Gtk.StyleContext.add_provider(widget.get_style_context(),
                                  provider,
                                  Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

    if isinstance(widget, Gtk.Container):
        widget.forall(self.apply_css, provider)

运行完整示例以更好地了解其工作原理。