样式 Gtk.Label 对象

问题描述

我有一个 应用程序,我想设置标签窗口对象的样式,我尝试了以下操作:

 public Object createConfirm(){
        var window = new Gtk.Window ();
        var grid = new Gtk.Grid () {
            orientation = Gtk.Orientation.VERTICAL,column_spacing = 6,row_spacing = 6
        };
        window.add(grid);
        window.title = "Shutdown Confirmation";
        window.border_width = 10;
        window.window_position = Gtk.WindowPosition.CENTER;
        window.set_default_size (350,80);
        window.destroy.connect (Gtk.main_quit);

        var label = new Gtk.Label(null);
        var label_text = "Are you sure to turn off Now?";
        label.set_markup("<b>"+label_text+"</b>");
        
...

那样 label.set_markup 仅成功地将标签文本加粗。当我尝试 set_markup("<h3>"+label_text+"</h3>")set_markup("<span style=\"color:red\">"+label_text+"</span>") 或使用除 <b> 以外的任何标签时,它不会在标签窗口上返回任何字符串。为什么会发生?是否有一个简单的解决方案,我不必使用任何额外的依赖项?

解决方法

如果您不需要动态更改样式值,推荐的标签(和所有其他小部件)样式的方法是使用 CSS。

在您的应用启动代码中,您可以从 CSS 文件创建应用范围的 Gtk.CssProvider。然后,在构建小部件时,使用 label.get_style_context().add_class() 向标签添加样式类。


标记语言看起来像 HTML,但实际上不是。 Here is a guide to the available tags and attributes。最值得注意的是,这里没有 CSS,文本样式是使用 <span> 元素上的属性添加的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...