我该如何在GTK中改变字体大小?

7

有没有一种简单的方法来更改GTK中文本元素的字体大小?目前我所能做的最好的方式是在标签上执行set_markup,使用一些愚蠢的东西:

lbl.set_markup("<span font_desc='Tahoma 5.4'>%s</span>" % text)

这需要我设置字体,看起来有很多开销(需要解析标记),而且更改按钮等的字体大小会很繁琐。有更好的方法吗?


今天我很惊讶地发现font_desc仅适用于字体大小。这对我来说并不明显。 - GTK 1.2.6 fanboy
2个回答

9

如果您想在应用程序中全局更改字体,我建议使用gtkrc(然后变成了一个谷歌问题,“gtkrc字体”查询将带领我们到这个ubuntu论坛链接,其中包含以下gtkrc文件的代码段):

style "font"
{
font_name = "Corbel 8"
}
widget_class "*" style "font"
gtk-font-name = "Corbel 8"

替换字体以满足你或用户的需求。

这样用户将获得一致的使用体验,并且能够轻松更改设置,而不需要涉及代码,同时你也无需处理维护个人配置相关代码所带来的额外开销。如果您对widget_class有更精确的定义,则可以使此设置更加具体化。

不同平台可能会有所不同,但是据我所知,如果使用了GTK,则该文件始终位于某个位置,并允许用户负责呈现细节。


我能否为我的应用程序使用自定义的gtkrc文件?如果可以,那么我该如何做? - Claudiu
1
尝试从这里的想法:http://www.daa.com.au/pipermail/pygtk/2008-December/016359.html - Andrew Y
链接已失效。 - LFMekz

3

C语言中,您可以做到:

gtk_widget_modify_font(lbl, pango_font_description_from_string("Tahoma 5.4"));

在PyGTK中,我认为它类似于以下内容:
pangoFont = pango.FontDescription("Tahoma 5.4")
lbl.modify_font(pangoFont)

2
在C语言中,这将会创建一个内存泄漏,因为pango字体描述需要在使用后使用pango_font_description_free()进行释放(这在pango_font_description_from_string()的文档中并不明显)。除此之外,这是一个可行的解决方案。 - GTK 1.2.6 fanboy
使用后立即释放? - LFMekz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接