如何使用pygtk或pango获取系统使用的默认字体?

时间:2012-08-07 03:05:58

标签: python pygtk pango pangocairo

我有一个使用pygtk的fontbutton。最初,我不想设置字体,因为系统将采用其默认字体。我的问题是获取系统使用的默认字体的代码行是什么,因此我首先保持默认字体。用户更改字体后,应该应用其各自的字体。 有人可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

如果您使用的是GNOME,那么您可以获得这样的默认字体。 (注意:未经测试)

from gi.repository import Gio
settings = Gio.Settings('org.gnome.desktop.interface')
font_name = settings.get_string('font-name')

您也可以根据需要使用密钥monospace-font-namedocument-font-name(我忘记了窗口标题字体的密钥名称。)

答案 1 :(得分:1)

有点迟了,但如果有人在将来面对这个问题,那么使用pygame的字体模块就是一个简洁的方法。当然这需要你安装和导入pygame并初始化它!

import pygame
pygame.font.init()
def_font = pygame.font.get_default_font()

答案 2 :(得分:0)

Gtk是一个可以在许多操作系统和桌面环境中运行的工具包。 Gtk不对默认字体和颜色负责。因此,(据我所知)没有任何单一函数可以从Gtk 获取这些值

您的OS / DE中可能没有一个默认字体,但很多。例如,在Ubuntu上,您可以选择(高级)系统设置中的那些:

enter image description here

如果您需要知道特定小部件的默认字体,例如标签,您可以执行以下操作:

from gi.repository import Gtk
l = Gtk.Label("Hello")
ls = l.get_style()
ls.font_desc.to_string()
# Ubuntu 11

答案 3 :(得分:0)

PyGObject 上,这适用于默认字体:

settings = Gtk.Settings.get_default()
font_name = settings.get_property('gtk-font-name')

print(font_name)
# 'Cantarell 11' 

不幸的是,我还没有找到访问等宽字体或任何其他字体的方法。