【发布时间】:2019-02-06 17:06:12
【问题描述】:
我正在构建一个具有语言学功能的文本编辑器。
我是第一次使用 Kivy 框架,但我非常喜欢它(它是 Tkinter 和 QT 在功率生产率方面的中间地带)。我已经能够构建大部分我需要的东西,除了这个:如何在 TextInput 小部件中格式化单个单词/字母?
简单示例:编辑器具有拼写检查功能(它检查数据库中是否存在单词),如果单词不存在,我如何通过将颜色更改为红色或添加红色背景阴影来突出显示它,但仅在那个单词中,其余文本继续黑色?
对所有文本执行此操作很容易(编辑 foreground_color 属性),但从我在文档中阅读的内容来看,TextInput 小部件在处理文本时很差(我可以获得光标信息和位置,但不能t 操纵 - 例如 TKinter 在这方面更好,它允许使用个性化的隐藏标签和样式)。
有 kivy.core.text.markup 小部件,它添加了 BBCODE 功能,但仅限于标签,不能与 TextInput 集成。一个有趣的事情是 CodeInput 小部件,但它仅适用于 Pygments,用于代码语法高亮,不能用于拼写检查器中的数据库中的目标词。
有什么想法吗?
我正在考虑使用 Canvas 在文字下方绘制红色矩形,但我不知道如何获得正确的位置和大小,并且需要为此禁用 TextInput 中的背景颜色或图像。由于 CodeInput 可以突出显示代码语法,我知道这是可能的,但不知道怎么做,因为没有这样的文档。
谢谢
【问题讨论】:
标签: python user-interface kivy