一个Gtk.Label中的多色文本

时间:2016-10-16 15:40:31

标签: python css python-3.x gtk gtk3

我使用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来设置它。我真的必须创建三个独立的标签,只是为了它的颜色吗?

1 个答案:

答案 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信号。)