GtkLabel打印格式化双值

GtkLabel打印格式化双值,gtk,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

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

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 output(stdout)

我做了一个快速终端测试,格式正确。
我可能要检查的是用于在GtkLabel中显示文本的字体。如果字体不是单空格,则“空格”字符要小得多,当两个空格字符放在一起时,可能会小得多。我使用默认值。但是,如果终端中的显示正确,也应该正确地应用于gtk?

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

buf = g_strdup_printf(_("Checking <tt>%6.2f</tt> MHz"), freq))
gtk_label_set_markup(GTK_LABEL(label), buf);
g_free(buf);
buf=g\u strdup\u printf(检查频率为%6.2f MHz))
gtk_标签_集合_标记(gtk_标签(标签),buf);
g_自由(buf);
“检查%0.2f MHz”(左对齐)或
“检查%-6.2f MHz”
(左对齐,但仍为6宽)