【问题标题】:How to get the default font used by the system using pygtk or pango?如何使用pygtk或pango获取系统使用的默认字体?
【发布时间】:2012-08-07 03:05:58
【问题描述】:

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

【问题讨论】:

    标签: python pygtk pango pangocairo


    【解决方案1】:

    如果您使用的是 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键(我忘记了窗口标题字体的键名。)

    【讨论】:

      【解决方案2】:

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

      settings = Gtk.Settings.get_default()
      font_name = settings.get_property('gtk-font-name')
      
      print(font_name)
      # 'Cantarell 11' 
      

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

        【解决方案4】:

        有点晚了,但如果将来有人遇到这种情况,一个巧妙的方法是使用pygame 的字体模块。当然这需要你安装并导入 pygame 并初始化它!

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

        【讨论】:

          猜你喜欢
          • 2011-10-31
          • 1970-01-01
          • 2012-06-16
          • 2010-12-26
          • 1970-01-01
          • 2019-12-11
          • 2014-07-27
          • 2019-01-15
          • 1970-01-01
          相关资源
          最近更新 更多