> **Источник:** https://python-all.ru/3.16/library/tkinter.font.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `tkinter.font` – обёртка шрифтов Tkinter

**Исходный код:** [Lib/tkinter/font.py](https://python-all.ru/src/main/Lib/tkinter/font.py)

---

Модуль `tkinter.font` предоставляет класс [`Font`](https://python-all.ru/3.16/library/tkinter.font.html#tkinter.font.Font) для создания и использования именованных шрифтов.

Различные насыщенности и наклоны шрифта:

#### `tkinter.font.NORMAL`

#### `tkinter.font.BOLD`

#### `tkinter.font.ITALIC`

#### `tkinter.font.ROMAN`

#### `class tkinter.font.Font(root=None, font=None, name=None, exists=False, **options)`

Класс `Font` представляет шрифт, используемый виджетами Tk. Он либо создаёт новый *именованный шрифт*, либо ссылается на существующий. Именованный шрифт – это способ Tk идентифицировать шрифт как единый объект, на который можно ссылаться по имени и перенастраивать на месте, вместо повторного указания его атрибутов при каждом использовании.

Если *exists* равен false (по умолчанию), создаётся новый именованный шрифт. Его атрибуты берутся из описания шрифта *font*, если оно задано, и переопределяются ключевыми аргументами *options*. Новый шрифт называется *name*, или же генерируется уникальное имя, если *name* опущен.

Если *exists* равен true, используется существующий шрифт, а не создаётся новый. Если задан *name*, это имя шрифта, который перенастраивается с помощью *font* и *options*, если хотя бы один из них задан. Если *name* опущен, описание шрифта *font* используется как есть, без создания именованного шрифта, так что он используется без потери точности методами [`actual()`](https://python-all.ru/3.16/library/tkinter.font.html#tkinter.font.Font.actual), [`measure()`](https://python-all.ru/3.16/library/tkinter.font.html#tkinter.font.Font.measure) и [`metrics()`](https://python-all.ru/3.16/library/tkinter.font.html#tkinter.font.Font.metrics). В этом случае ключевые аргументы не принимаются, и атрибут `name` является самим описанием, а не строкой.

Описание шрифта *font* – это кортеж из названия семейства, размера и ноля или более стилей, или любая другая форма, принимаемая Tk, например имя именованного шрифта.

Ключевые аргументы *options*:

> *family*
>
> – семейство шрифта, например, Courier, Times
>
> *size*
>
> – размер шрифта
>
> Если
>
> *size*
>
> положителен, он интерпретируется как размер в пунктах.
>
> Если
>
> *size*
>
> – отрицательное число, его абсолютное значение считается
>
> как размер в пикселях.
>
> *weight*
>
> – насыщенность шрифта (NORMAL, BOLD)
>
> *slant*
>
> – наклон (ROMAN, ITALIC)
>
> *underline*
>
> – подчёркивание шрифта (0 – нет, 1 – подчёркивание)
>
> *overstrike*
>
> – зачёркивание шрифта (0 – нет, 1 – зачёркивание)

Изменено в версии 3.10: Теперь два шрифта считаются равными (`==`) только если оба являются экземплярами `Font` с одним и тем же именем, принадлежащими одному интерпретатору Tcl.

Изменено в версии 3.16.0a0 (не выпущена): Теперь описание шрифта можно использовать без создания нового именованного шрифта, и ключевые аргументы переопределяют атрибуты указанного *font*.

#### `actual(option=None, displayof=None)`

Возвращает фактические атрибуты шрифта, которые могут отличаться от запрошенных из-за ограничений платформы. Без указания *option* возвращает словарь всех атрибутов; если указан *option*, возвращает значение этого единственного атрибута.

#### `cget(option)`

Извлекает атрибут шрифта.

> **Примечание**
>
> `cget()` и [`configure()`](https://python-all.ru/3.16/library/tkinter.font.html#tkinter.font.Font.configure) работают с именованным шрифтом и вызывают [`TclError`](https://python-all.ru/3.16/library/tkinter.html#tkinter.TclError) для описания шрифта, используемого как есть. Используйте [`actual()`](https://python-all.ru/3.16/library/tkinter.font.html#tkinter.font.Font.actual) для запроса атрибутов последнего.

#### `configure(**options)`

Изменяет один или несколько атрибутов шрифта. Без аргументов возвращает словарь текущих атрибутов.

[`config()`](https://python-all.ru/3.16/library/tkinter.font.html#tkinter.font.Font.config) является псевдонимом `configure()`.

#### `copy()`

Возвращает новый экземпляр текущего шрифта.

#### `measure(text, displayof=None)`

Возвращает количество пикселей, которое текст займёт на указанном дисплее при форматировании текущим шрифтом. Если дисплей не указан, используется главное окно приложения.

#### `metrics(*options, **kw)`

Возвращает данные о шрифте. Без параметров возвращает словарь, сопоставляющий каждому названию метрики её целочисленное значение; если указано одно название метрики, возвращает значение этой метрики как целое число. Параметры включают:

***ascent* – расстояние от базовой линии до самой высокой точки, которую**

может занимать символ шрифта.

***descent* – расстояние от базовой линии до самой низкой точки, которую**

может занимать символ шрифта.

***linespace* – минимальный вертикальный интервал, необходимый между любыми двумя**

символами шрифта, чтобы гарантировать отсутствие вертикального наложения строк.

*fixed* – 1, если шрифт моноширинный, иначе 0

#### `tkinter.font.families(root=None, displayof=None)`

Возвращает кортеж названий доступных семейств шрифтов.

#### `tkinter.font.names(root=None)`

Возвращает кортеж названий всех определённых шрифтов.

#### `tkinter.font.nametofont(name, root=None)`

Возвращает [`Font`](https://python-all.ru/3.16/library/tkinter.font.html#tkinter.font.Font) представление существующего именованного шрифта *name*. *root* – это виджет, интерпретатору Tcl которого принадлежит шрифт; если опущен, используется главное окно по умолчанию.

Изменено в версии 3.10: Добавлен параметр *root*.
