PyGtk3 如何更改应用程序主题?
PyGtk3 how to change application theme?
我尝试了使用 Gtk.rc_parse("path/to/Hooli/gtk-3/gtk.css") 代码的 rc_parse 方法,但它不起作用。这个问题很简单,但解决问题并不容易。如何更改我的 gtk 应用程序主题?或者如何在我的 gtk 应用程序上使用自定义主题?
谢谢。
您正在将旧方法与新方法 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)
运行 完整示例以更好地了解其工作原理。
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 上工作得非常好……我希望这能解决您的问题
我尝试了使用 Gtk.rc_parse("path/to/Hooli/gtk-3/gtk.css") 代码的 rc_parse 方法,但它不起作用。这个问题很简单,但解决问题并不容易。如何更改我的 gtk 应用程序主题?或者如何在我的 gtk 应用程序上使用自定义主题?
谢谢。
您正在将旧方法与新方法 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)
运行 完整示例以更好地了解其工作原理。
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 上工作得非常好……我希望这能解决您的问题