2016-10-16 4 views
1

Я использую файл css для оформления моего интерфейса. Итак, у меня есть в настоящее время:Многоцветный текст в одном Gtk.Label

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 для его стиля. Я действительно должен создать три разделенных ярлыка только для того, чтобы их цвет?

ответ

0

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

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

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

+0

Спасибо. Вы решили это. –