我在文本输出中有一个带数字的标签:
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?
答案 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);