GTK+ 设置字体大小
GTK+ Set Font Size
如、
the MenuItems are too small for my use case.
Therefore, my question is, "how I may increase the font size of the text "Save", "Load" and "Exit?" "
下面的代码能够改变 "Save" 文本的样式,只是 不能改变字体大小。
执行可执行文件时,出现以下警告:
Gtk-WARNING **: Theme parsing error: Styles.css:10:14: Junk at end of value
当行 font-size: 25px;
被删除(或注释掉)时,警告消失。
这似乎 font-size
未在 GTK+3 中实现,但它在
中被列为有效的 属性
https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15
所以问题仍然存在,“如何使用此方法增加字体大小?”
Styles.css
/*
Valid Font Properties:
https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15
*/
.Item_Save {
background: rgba(000, 255, 000, 1);
font-style: italic;
font-weight: 800;
font-size: 25px;
padding: 10px 10px 10px 10px;
}
C 源文件
#include <gtk/gtk.h>
int main (int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkCssProvider* Provider = gtk_css_provider_new();
GdkDisplay* Display = gdk_display_get_default();
GdkScreen* Screen = gdk_display_get_default_screen(Display);
gtk_style_context_add_provider_for_screen(Screen, GTK_STYLE_PROVIDER(Provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(Provider), "Styles.css", NULL);
GtkWidget* Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget* MenuBar = gtk_menu_bar_new();
GtkWidget* MenuItem_File = gtk_menu_item_new_with_mnemonic("_File");
GtkWidget* SubMenu1 = gtk_menu_new();
GtkWidget* Item_Save = gtk_menu_item_new_with_mnemonic("_Save");
GtkWidget* Item_Load = gtk_menu_item_new_with_mnemonic("_Load");
GtkWidget* Item_Exit = gtk_menu_item_new_with_mnemonic("_Exit");
GtkStyleContext *Context;
Context = gtk_widget_get_style_context(Item_Save);
gtk_style_context_add_class(Context, "Item_Save");
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Save);
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Load);
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), gtk_separator_menu_item_new());
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Exit);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem_File), SubMenu1);
gtk_menu_shell_append(GTK_MENU_SHELL(MenuBar), MenuItem_File);
GtkWidget* VerticalBox;
VerticalBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start(GTK_BOX(VerticalBox), MenuBar, false, false, 0);
gtk_container_add(GTK_CONTAINER(Window), VerticalBox);
gtk_widget_show_all(MenuBar);
gtk_widget_show(VerticalBox);
gtk_window_set_default_size(GTK_WINDOW(Window), 950, 600);
gtk_window_set_position(GTK_WINDOW(Window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(Window), "My Title");
gtk_widget_show(Window);
gtk_main();
return 0;
}
您可能会击中 this bug。似乎某些版本的 Gtk3 忽略了 font-size 和 font-face。此错误已在 Ubuntu 上报告,但我找不到是否已将其转发给 Gtk3 团队。
另一方面,Gtk 错误跟踪器报告了一个 related problem in Gtk.3.16+,这可能与您的问题有关。
我会尝试在这里编译您的程序并返回报告。
报告:
这里似乎工作得很好:
请注意,我安装了 Gtk+ 版本 3.20.6。另外,请注意,与 window 标题相比,原始字体大小看起来相当合理('File'、'Load' 和 'Exit')。
更新: 从您的评论中,我了解到您仍在使用版本 3。6.x。自3.6以来有巨大差异!特别是 CSS 实现已经明显成熟。就在 3.18 到 3.20 之间,很多很多事情都发生了变化。我很确定字体大小问题自 3.6 以来已得到解决。 (刚刚检查过 - 3.6 已经快 3 岁了)。 CSS 系统变化的一个指标是,有必要在每个新的 Gtk+ 版本中更新所有 Gtk+ 'themes'。
如
the MenuItems are too small for my use case.
Therefore, my question is, "how I may increase the font size of the text "Save", "Load" and "Exit?" "
下面的代码能够改变 "Save" 文本的样式,只是 不能改变字体大小。
执行可执行文件时,出现以下警告:
Gtk-WARNING **: Theme parsing error: Styles.css:10:14: Junk at end of value
当行 font-size: 25px;
被删除(或注释掉)时,警告消失。
这似乎 font-size
未在 GTK+3 中实现,但它在
中被列为有效的 属性
https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15
所以问题仍然存在,“如何使用此方法增加字体大小?”
Styles.css
/*
Valid Font Properties:
https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15
*/
.Item_Save {
background: rgba(000, 255, 000, 1);
font-style: italic;
font-weight: 800;
font-size: 25px;
padding: 10px 10px 10px 10px;
}
C 源文件
#include <gtk/gtk.h>
int main (int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkCssProvider* Provider = gtk_css_provider_new();
GdkDisplay* Display = gdk_display_get_default();
GdkScreen* Screen = gdk_display_get_default_screen(Display);
gtk_style_context_add_provider_for_screen(Screen, GTK_STYLE_PROVIDER(Provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(Provider), "Styles.css", NULL);
GtkWidget* Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget* MenuBar = gtk_menu_bar_new();
GtkWidget* MenuItem_File = gtk_menu_item_new_with_mnemonic("_File");
GtkWidget* SubMenu1 = gtk_menu_new();
GtkWidget* Item_Save = gtk_menu_item_new_with_mnemonic("_Save");
GtkWidget* Item_Load = gtk_menu_item_new_with_mnemonic("_Load");
GtkWidget* Item_Exit = gtk_menu_item_new_with_mnemonic("_Exit");
GtkStyleContext *Context;
Context = gtk_widget_get_style_context(Item_Save);
gtk_style_context_add_class(Context, "Item_Save");
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Save);
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Load);
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), gtk_separator_menu_item_new());
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Exit);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem_File), SubMenu1);
gtk_menu_shell_append(GTK_MENU_SHELL(MenuBar), MenuItem_File);
GtkWidget* VerticalBox;
VerticalBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start(GTK_BOX(VerticalBox), MenuBar, false, false, 0);
gtk_container_add(GTK_CONTAINER(Window), VerticalBox);
gtk_widget_show_all(MenuBar);
gtk_widget_show(VerticalBox);
gtk_window_set_default_size(GTK_WINDOW(Window), 950, 600);
gtk_window_set_position(GTK_WINDOW(Window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(Window), "My Title");
gtk_widget_show(Window);
gtk_main();
return 0;
}
您可能会击中 this bug。似乎某些版本的 Gtk3 忽略了 font-size 和 font-face。此错误已在 Ubuntu 上报告,但我找不到是否已将其转发给 Gtk3 团队。
另一方面,Gtk 错误跟踪器报告了一个 related problem in Gtk.3.16+,这可能与您的问题有关。
我会尝试在这里编译您的程序并返回报告。
报告:
这里似乎工作得很好:
请注意,我安装了 Gtk+ 版本 3.20.6。另外,请注意,与 window 标题相比,原始字体大小看起来相当合理('File'、'Load' 和 'Exit')。
更新: 从您的评论中,我了解到您仍在使用版本 3。6.x。自3.6以来有巨大差异!特别是 CSS 实现已经明显成熟。就在 3.18 到 3.20 之间,很多很多事情都发生了变化。我很确定字体大小问题自 3.6 以来已得到解决。 (刚刚检查过 - 3.6 已经快 3 岁了)。 CSS 系统变化的一个指标是,有必要在每个新的 Gtk+ 版本中更新所有 Gtk+ 'themes'。