Я создаю текстовый редактор с лингвистическими функциями.
Я впервые использую инфраструктуру Kivy, но мне она очень нравится (это среднее между Tkinter и QT по соотношению мощности и производительности). Мне удалось построить большую часть того, что мне уже нужно, кроме этого: как я могу отформатировать отдельные слова / буквы в виджете TextInput?
Простой пример: редактор имеет возможности проверки орфографии (он проверяет, существует ли слово в БД), как выделить слово, если оно не существует, изменив цвет на красный или добавив тень на красном фоне , но только в этом единственном слове остальная часть текста остается черной?
Это легко сделать со всем текстом (редактирование свойства foreground_color), но из того, что я прочитал в документации, виджет TextInput плох, когда дело доходит до манипулирования текстом (я могу получить информацию и позицию курсора, но могу ' • манипулировать - TKinter, например, лучше в этом, он позволяет использовать персонализированные скрытые теги и стили).
Существует виджет kivy.core.text.markup, который добавляет функциональность BBCODE, но только к меткам, не может интегрироваться с TextInput. Интересным является виджет CodeInput, но он работает только с Pygments, для подсветки синтаксиса кода не может использовать его для целевых слов в БД при проверке орфографии.
Есть идеи?
Я думал о рисовании красных прямоугольников под словами с помощью Canvas, но я не знаю, как получить правильную позицию и размер, и для этого мне нужно было бы отключить цвета фона или изображения в TextInput. Поскольку CodeInput может подсвечивать синтаксис кода, я знаю, что это возможно, но не знаю, как, поскольку для такой вещи нет документации.
Спасибо