Как получить шрифт по умолчанию, используемый системой, используя 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