Итак, текстовый редактор tkinter!
Редактор, очевидно, должен иметь текстовые стили, которые необходимо изменить набранный текст для любого форматирования в настоящее время, используя теги. Но проблема в том, что имя тега должно измениться при изменении форматирования, иначе тег будет применен ко всему тексту. (Это была проблема, что я изо всех сил, чтобы определить, в течение некоторого времени)
Чтобы избежать этого, вам нужно будет много меток (как bold, both, calibri
и т.д.), так что код будет выглядеть следующим образомtkinter - управление несколькими тегами
if style == 'bold':
tag_add('bold', 'insert -1c', 'insert')
tag_configure('bold', font=('Calibri', 12, 'bold'))
if stlye == 'italic':
etc etc
Это ужасный код и делает невозможным использование разных шрифтов/размеров.
Есть правильный способ организации несколько тегов, как это, что-то вроде
tag.add(currentstyle, 'insert -1c', 'insert')
tag.config(currentstyle, font=(currentfont, currentsize, currentweight, currentslant))
Спасибо за вашу помощь
UPDATE
решен с немалым количеством помощи от Bryan
tagname = '{}-{}-{}-{}'.format(font, fontsize, weight, slant)
textbox.tag_add(tagname, 'insert -1c', 'insert')
textbox.tag_configure(tagname, font=(font, fontsize, weight, slant))
теперь каждая бирка имеет уникальное имя
думаю, вы должны думать за пределами коробки иногда, благодаря – EriktheRed
@EriktheRed: Tkinter больше похож на магазин пиломатериалов, чем мебельный магазин вы. могут создавать действительно приятные интерфейсы с Tkinter, но вам иногда приходится выполнять работу самостоятельно. –