更改顶部 GTKWindow 的字体 face/size?
Change font face/size of the top GTKWindow?
我正在尝试使用 .NET Core GTK。对于 WinForms,我们可以 select 表单,然后单击字体 属性 以在表单设计器中更改字体或大小。如果我们更改顶部窗体的字体,它将应用于窗体上的所有子控件。
我想在 Glade 中做类似的事情,但我在任何属性选项卡中都找不到 "Font" GUI。
- 这可以用 GTK# 实现吗?
- 如果可以,是否可以在 Glade 中完成?
- 如果2的答案是否定的,是否可以在代码中完成?
是的,这在 GTK 和 Glade 中都是可能的,尽管需要一些代码来更改所有表单字体。
在 GTK 中,您将使用 GtkFontChooserWidget。这应该让您在字体之间进行选择。
在 Glade 中,当您使用属性选项卡时,您可以使用 Scale 属性更改字体大小。我还没有弄清楚如何通过这些属性更改实际字体。值得庆幸的是有一个解决方法。不使用属性,而是使用标记。标记适用于字体大小和字体样式。
Markup Example
<span font='36' face='Georgia'>Markup</span>
假设您使用 GtkComboBoxText 列出可能的字体和选择按钮,您只需要一个处理程序来遍历每个标签并将字体更改为指定的字体。
def when_visible(window):
"""
This is where per-window initialization takes place.
Values to be displayed are populated into their widgets.
"""
global FONT_FACE
name = Gtk.Buildable.get_name(window) # Window currently on
if 'font_select_screen' = name:
font = BUILDER.get_object('fontEntryCombo')
FONT_FACE = font.get_active_text()
elif 'random_screen' = name:
label1_text = "<span font='36' face='{}'>Label</span>".format(FONT_FACE)
label1 = BUILDER.get_object('label1')
label1.set_markup(label1_text)
我正在尝试使用 .NET Core GTK。对于 WinForms,我们可以 select 表单,然后单击字体 属性 以在表单设计器中更改字体或大小。如果我们更改顶部窗体的字体,它将应用于窗体上的所有子控件。
我想在 Glade 中做类似的事情,但我在任何属性选项卡中都找不到 "Font" GUI。
- 这可以用 GTK# 实现吗?
- 如果可以,是否可以在 Glade 中完成?
- 如果2的答案是否定的,是否可以在代码中完成?
是的,这在 GTK 和 Glade 中都是可能的,尽管需要一些代码来更改所有表单字体。
在 GTK 中,您将使用 GtkFontChooserWidget。这应该让您在字体之间进行选择。
在 Glade 中,当您使用属性选项卡时,您可以使用 Scale 属性更改字体大小。我还没有弄清楚如何通过这些属性更改实际字体。值得庆幸的是有一个解决方法。不使用属性,而是使用标记。标记适用于字体大小和字体样式。
Markup Example
<span font='36' face='Georgia'>Markup</span>
假设您使用 GtkComboBoxText 列出可能的字体和选择按钮,您只需要一个处理程序来遍历每个标签并将字体更改为指定的字体。
def when_visible(window):
"""
This is where per-window initialization takes place.
Values to be displayed are populated into their widgets.
"""
global FONT_FACE
name = Gtk.Buildable.get_name(window) # Window currently on
if 'font_select_screen' = name:
font = BUILDER.get_object('fontEntryCombo')
FONT_FACE = font.get_active_text()
elif 'random_screen' = name:
label1_text = "<span font='36' face='{}'>Label</span>".format(FONT_FACE)
label1 = BUILDER.get_object('label1')
label1.set_markup(label1_text)