Невозможно применить пользовательскую тему к приложению PyGObject - PullRequest
0 голосов
/ 25 сентября 2018

Я разработал приложение на Ubuntu 16.04, используя PyGObject и Glade.Мой босс хочет, чтобы я его стилизовал, поэтому я решил, что это можно сделать с помощью тем Gnome.Я скачал пакет с этой страницы https://www.gnome -look.org / p / 1190851 / и пытался понять, как применить его к приложению.

Во-первых, используя приведенный ниже код из этого ответа Мне удалось изменить тему по умолчанию, используя темы, доступные в /usr/share/themes/.

settings = gtk.Settings.get_default()
settings.set_property("gtk-theme-name", "Numix")
settings.set_property("gtk-application-prefer-dark-theme", False)

Тем не менее, приложение выглядит одинаково для любой установленной мной темы (Adwaita / Raleigh / AgingGorilla и т. Д.).Поэтому я не смог перейти к использованию этого кода для применения пользовательской темы.

Во-вторых , я пытался использовать Gtk.CssProvider(), как предложено в в этом ответе для применения таблицы стилей CSS для изменения темы.Я покопался в папке пользовательских тем и нашел файл css на ~/adapta-gtk-theme/Adapta-Amber/gtk-3.0/gtk.css, который пытался загрузить с Gtk.CssProvider.load_from_path и Gtk.CssProvider.load_from_file, но он не работал.

Это ошибка, возвращаемая Gtk.CssProvider.load_from_path

Traceback (most recent call last):
  File "./evaltool (copy).py", line 298, in <module>
    e = Eval()
  File "./evaltool (copy).py", line 45, in __init__
    css_provider.load_from_path("~/adapta-gtk-theme/Adapta-Amber/gtk-3.0/gtk-dark.css")
GLib.Error: gtk-css-provider-error-quark: gtk-dark.css:1:78Failed to import: The resource at '/org/adapta-project/gtk-3.20/gtk-contained-dark.css' does not exist (2)

Это ошибка, возвращаемая Gtk.CssProvider.load_from_file

Traceback (most recent call last):
  File "./evaltool (copy).py", line 298, in <module>
    e = Eval()
  File "./evaltool (copy).py", line 45, in __init__
    css_provider.load_from_file("~/adapta-gtk-theme/Adapta-Amber/gtk-3.0/gtk-dark.css")
TypeError: argument file: Expected Gio.File, but got str

Как я могу применить этоПользовательская тема для моего приложения?

PS Я знаю , что выбор темы должен быть оставлен на усмотрение пользователя, но я не хочу отказывать своему боссу.

...