Как я могу изменить размер шрифта в GTK?

Есть ли простой способ изменить размер шрифта текстовых элементов в GTK? Прямо сейчас лучшее, что я могу сделать, это сделать set_markup на этикетке с чем-то глупым, например:

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

Это 1) требует, чтобы я установил шрифт, 2) кажется, что много накладных расходов (необходимость анализировать разметку) и 3) будет раздражать изменение размера шрифта кнопок и тому подобного. Есть ли способ лучше?


person Claudiu    schedule 12.08.2009    source источник
comment
Сегодня я был удивлен, обнаружив, что font_desc работает только с размером шрифта. Это было не очевидно для меня.   -  person GTK 1.2.6 fanboy    schedule 03.03.2018


Ответы (2)


Если вы хотите полностью изменить шрифт в своих приложениях, я бы оставил эту работу gtkrc (затем становится вопросом Google, а запрос «шрифт gtkrc» приводит нас к эта ссылка на форумы Ubuntu, которая содержит следующий фрагмент файла gtkrc):

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

(замените шрифт на тот, который вам/пользователю нужен)

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

YMMV для разных платформ, но, насколько мне известно, этот файл всегда присутствует в каком-то месте, если используется GTK, и позволяет пользователю управлять деталями презентации.

person Andrew Y    schedule 13.08.2009
comment
можно ли использовать собственный файл gtkrc только для моего приложения? если да, то как я могу это сделать? - person Claudiu; 13.08.2009
comment
попробуйте идею отсюда: daa.com.au/pipermail/ pygtk/2008-декабрь/016359.html - person Andrew Y; 13.08.2009
comment
Ссылка мертва, черт возьми - person LFMekz; 06.01.2020

В 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)
person Reed Copsey    schedule 12.08.2009
comment
В C это приведет к утечке памяти, так как описание шрифта pango необходимо освобождать с помощью pango_font_description_free () после использования (это не очевидно из документации самого pango_font_description_from_string ()). Кроме этого, это возможное решение. - person GTK 1.2.6 fanboy; 03.03.2018
comment
Освобождается сразу после использования? - person LFMekz; 06.01.2020