Я использую Python 3.4 с Gtk 3.18. Мне удалось выяснить, как реализовать фоновое изображение через CSS для виджета (Gtk.Box в моем случае). Тем не менее, я хочу иметь возможность динамически изменять это фоновое изображение на то, которое пользователь указывает. Как это можно сделать?
Часть файла css, который в настоящее время используется для фона окна.
.backImagePitPass {
background-image: url('../software/resources/PitPass.png');
background-size: contain;
background-position: left top;
background-repeat: no-repeat;
border: 1px solid black;
outline-style: solid;
}
Внедрение таблицы стилей для приложения.
def _initStyles(self):
css_provider = Gtk.CssProvider()
css_provider.load_from_path('ui/main/gtk-widgets.css')
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),
css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
Я пробовал это как тест, но ящик и его содержимое даже не отображаются.
context = self._boxPreview.get_style_context()
css_provider = Gtk.CssProvider()
css_provider.load_from_data(b'''
.backImagePitPass {
background-image: url('../software/resources//PitPass2.png');
background-size: contain;
background-position: left top;
border: 1px solid black;
}
''')
context.add_provider(css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
После выполнения большего поиска я нашел решение здесь, используя параметр Selected свойство Row в TreeView динамически в Gtk3 (python), который указал мне на работоспособное решение.
load_from_data()
чтобы загрузить этот новый CSS в ваш Gtk Box. Ср ubuntuforums.org/showthread.php?t=2301255, который делает нечто подобное (но в C).