Многоцветный текст в одной Gtk.Label

Я использую файл css для оформления моего интерфейса. Поэтому у меня есть в настоящее время:

    style_file = Gio.File.new_for_path('interface.css')
    style_provider = Gtk.CssProvider()
    style_provider.load_from_file(style_file)

    Gtk.StyleContext.add_provider_for_screen(
        Gdk.Screen.get_default(),
        style_provider,
        Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
    )

    self.label = Gtk.Label()
    self.label.set_name('foobar_label')
    self.label.set_markup("<span color='blue'>foo </span>"
                          "<span color='green'>{} </span>"
                          "<span color='red'>"
                          "bar</span>".format(baz))

Я хочу избавиться от вызова set_markup и использовать css для его стиля. Я действительно должен создать три разделенных ярлыка только для того, чтобы их цвет?

python,css,python-3.x,gtk,gtk3,

1

Ответов: 1


0 принят

Можно подстроить подстроки с Gtk.Labelиспользованием CSS, хотя это связано с небольшим обходным решением.

Вот один пример, написанный на Javascript: https://github.com/endlessm/eos-knowledge-lib/blob/d4c9666/js/app/utils.js#L170-L225

В основном это включает временное добавление другого класса стиля в контекст виджета, чтобы поднять дополнительные стили из вашего CSS, а затем перевести его в разметку Pango. Вы должны вызывать format_ui_string()при создании своего ярлыка, а также всякий раз, когда стиль обновляется ( style-updatedсигнал).

питон, CSS, питон-3.x, GTK, GTK3,
Похожие вопросы