GtkLabel打印格式化双倍价值

时间:2014-12-09 17:59:46

标签: gtk

我在文本输出中有一个带数字的标签:

double freq;
    .....................................................

buf = g_strdup_printf(_("Checking %6.2f MHz"), freq))
gtk_label_set_text(GTK_LABEL(label), buf);
g_free(buf);

文本显示在gtklabel中,不考虑此示例中的格式说明符:

打印左边对齐的数字:

Checking 88.40 MHz
Checking 95.10 MHz
Checking 102.20 MHz

而不是右对齐:

Checking  88.40 MHz
Checking  95.10 MHz
Checking 102.20 MHz

有一种方法可以被尊重这个必需的格式化字符串:%6.2f就像函数printf输出(stdout)。

我做了快速终端测试,格式正确。 我可能想要检查的是用于在GtkLabel中显示文本的字体。如果字体不是单字空格,那么" Space"字符非常小,当两个空格字符放在一起时可能会更小。我使用默认ubuntu font。但是如果终端显示正确也应该正确应用到gtk?

1 个答案:

答案 0 :(得分:0)

正如您所说,标签使用的是比例字体,其中空间非常薄。要解决此问题,请切换到gtk_label_set_markup并使用pango markup为字符串的数字部分指定固定宽度字体:

buf = g_strdup_printf(_("Checking <tt>%6.2f</tt> MHz"), freq))
gtk_label_set_markup(GTK_LABEL(label), buf);
g_free(buf);