Как получить шрифт по умолчанию, используемый системой, используя pygtk или pango?

У меня есть кнопка с помощью pygtk. Первоначально я не хочу устанавливать шрифт, так как система примет его по умолчанию. Мой вопрос заключается в том, какова строка кода, чтобы получить шрифт по умолчанию, используемый системой, чтобы я сначала оставил все по умолчанию. Позже, после того как пользователь изменит шрифт, его соответствующие шрифты должны применяться. Кто-нибудь может помочь?

3 ответа

Если вы используете GNOME, то вы можете получить шрифт по умолчанию, как этот. (Внимание: не проверено)

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

Вы также можете использовать ключи monospace-font-name а также document-font-name при необходимости (я забыл название ключа для шрифта заголовка окна.)

В PyGObject это работает для шрифта по умолчанию:

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

print(font_name)
# 'Cantarell 11' 

К сожалению, я не нашел способа получить доступ к моноширинному шрифту или любому другому шрифту.

В последнее время, но если кто-то сталкивается с этим в будущем, аккуратный способ будет использовать модуль шрифта pygame, Конечно, для этого потребуется установить и импортировать Pygame и инициализировать его!

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

Gtk - это инструментарий, который может работать во многих операционных системах и рабочих средах. Gtk не несет ответственности за шрифты и цвета по умолчанию. Поэтому нет (насколько я знаю) ни одной функции для получения этих значений из Gtk.

Вероятно, в вашей ОС /DE есть не один шрифт по умолчанию, а много. Например, в Ubuntu вы можете выбрать их в (расширенных) системных настройках:

Если вам нужно знать шрифт по умолчанию для определенного виджета, например, метки, вы можете сделать следующее:

from gi.repository import Gtk
l = Gtk.Label("Hello")
ls = l.get_style()
ls.font_desc.to_string()
# Ubuntu 11
Другие вопросы по тегам