Обрабатывать несколько тегов в текстовом виджете, когда каждый тег добавляет стиль к тексту?

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

Я просматривал этот ответ на текстовое поле Advanced Tkinter, а также код для виджета StyledText, но ни один из них не отвечает на мой вопрос.

Основной способ настройки тегов:

txtWidget.tag_configure("bold", font=my_bold_font)
txtWidget.tag_configure("italic", font=my_italic_font)

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

Это лучший способ приступить к созданию события tag_bind для метода, который определит мои комбинации тегов и назначит шрифт соответственно, или есть другой способ?

1 ответ

Решение

К сожалению, это одна из немногих слабостей текстового виджета. Если вы хотите выделить жирным шрифтом и курсивом, вам нужен тег со шрифтом, который имеет оба этих атрибута. Вы можете создавать новые теги на лету, так что это не является невозможной проблемой, но может быть немного утомительно выяснить, какие символы в диапазоне нуждаются в теге "жирный", который нуждается в теге "курсив", а какой новый тег "bold_italic".

Другие вопросы по тегам