Работает Gtk.CssProvider. Имеются три файла CSS.
Может кто нибудь подсказать как из функции в приложении вытащить переменные с именами файлов и тем и “запихнуть” их в Provider?
Заранее благодарен.
Код макета:
#!/usr/bin/env/python3 import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Gdk, Gio class MyWindow(Gtk.Window): def __init__(self): super().__init__(title="sablon") grid = Gtk.Grid() grid.set_column_spacing(10) grid.set_row_spacing(10) self.add(grid) self.menubar = Gtk.MenuBar() self.menubar.set_hexpand(True) self.subMenu1 = Gtk.Menu() self.menuTheme = Gtk.MenuItem(label = "Темы") self.menubar.append(self.menuTheme) self.itemBanan = Gtk.MenuItem(label = "Банан") self.itemPerl = Gtk.MenuItem(label = "Жемчуг") self.itemBisq = Gtk.MenuItem(label = "Бисквит") self.subMenu1.append(self.itemBanan) self.subMenu1.append(self.itemPerl) self.subMenu1.append(self.itemBisq) self.menuTheme.set_submenu(self.subMenu1) self.itemBanan.connect("activate", self.themeSwap) self.itemPerl.connect("activate", self.themeSwap) self.itemBisq.connect("activate", self.themeSwap) ent1 = Gtk.Entry() ent2 = Gtk.Entry() ent3 = Gtk.Entry() grid.attach(self.menubar, 0, 0, 3, 1) grid.attach(ent1, 0, 1, 1, 1) grid.attach(ent2, 1, 2, 1, 1) grid.attach(ent3, 2, 3, 1, 1) provider = Gtk.CssProvider() provider.load_from_file(Gio.File.new_for_path('banan.css')) Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) self.get_style_context().add_class('banan') def themeSwap(self, event): self.itemName = self.subMenu1.get_active() if self.itemName == self.itemBanan: self.fileName = 'banan.css' self.className = 'banan' elif self.itemName == self.itemPerl: self.fileName = 'perl.css' self.className = 'perl' elif self.itemName == self.itemBisq: self.fileName = 'bisq.css' self.className = 'bisq' #return(self.fileName, self.className) print(self.fileName, self.className) if __name__ == '__main__': window = MyWindow() window.connect("destroy", Gtk.main_quit) window.show_all() Gtk.main()