【发布时间】:2019-08-14 02:42:05
【问题描述】:
我正在尝试使用 .NET Core GTK。对于 WinForms,我们可以选择表单,然后单击 Font 属性以在表单设计器中更改字体或大小。如果我们改变顶部窗体的字体,它会应用到窗体上的所有子控件。
我想在 Glade 中做类似的事情,但我在任何属性选项卡中都找不到“字体”GUI。
- GTK# 可以做到这一点吗?
- 如果可以,可以在 Glade 内完成吗?
- 如果2的答案是否定的,可以在代码中做吗?
【问题讨论】:
我正在尝试使用 .NET Core GTK。对于 WinForms,我们可以选择表单,然后单击 Font 属性以在表单设计器中更改字体或大小。如果我们改变顶部窗体的字体,它会应用到窗体上的所有子控件。
我想在 Glade 中做类似的事情,但我在任何属性选项卡中都找不到“字体”GUI。
【问题讨论】:
是的,这在 GTK 和 Glade 中都是可能的,尽管需要一些代码来更改所有表单的字体。
在 GTK 中,您将使用 GtkFontChooserWidget。这应该让您在字体之间进行选择。
在 Glade 中,当您使用属性选项卡时,您可以使用 Scale 属性更改字体大小。我还没有弄清楚如何通过这些属性更改实际字体。值得庆幸的是,有一个解决方法。不要使用属性,而是使用标记。标记适用于字体大小和字体样式。
<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)
【讨论】: