我使用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来设置它。我真的必须创建三个独立的标签,只是为了它的颜色吗?
答案 0 :(得分:0)
可以使用CSS为Gtk.Label
的子字符串设置样式,但它确实涉及一些变通方法。
以下是一个用Javascript编写的示例:https://github.com/endlessm/eos-knowledge-lib/blob/d4c9666/js/app/utils.js#L170-L225
基本上它涉及临时向窗口小部件的上下文添加另一个样式类,以从CSS中获取额外的样式,然后将其转换为Pango标记。在构建标签时以及样式更新时都会调用format_ui_string()
(style-updated
信号。)