更改顶部 GTKWindow 的字体 face/size?

Change font face/size of the top GTKWindow?

我正在尝试使用 .NET Core GTK。对于 WinForms,我们可以 select 表单,然后单击字体 属性 以在表单设计器中更改字体或大小。如果我们更改顶部窗体的字体,它将应用于窗体上的所有子控件。

我想在 Glade 中做类似的事情,但我在任何属性选项卡中都找不到 "Font" GUI。

  1. 这可以用 GTK# 实现吗?
  2. 如果可以,是否可以在 Glade 中完成?
  3. 如果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)