在TextInput小部件内设置单词的样式

时间:2018-08-31 16:11:34

标签: python user-interface kivy

我正在构建具有语言学功能的文本编辑器。

我第一次使用Kivy框架,但我对此非常喜欢(它在Tkinter和QT之间处于功率生产率比的中间位置)。除了以下内容之外,我已经能够构建大部分所需的东西:如何在TextInput小部件内设置单个单词/字母的格式?

简单示例:编辑器具有拼写检查功能(它检查数据库中是否存在单词),如何通过将颜色更改为红色或添加红色背景阴影来突出显示不存在的单词,但仅在单个单词中,其余文本继续为黑色?

对所有文本都很容易做到这一点(编辑前景色属性),但是从我在文档中看到的内容来看,TextInput小部件在处理文本时效果不佳(我可以获取光标信息和位置,但是可以' t操作-例如TKinter更好,它允许使用个性化的隐藏标签和样式。

有一个kivy.core.text.markup小部件,它添加了BBCODE功能,但仅对标签有效,无法与TextInput集成。有趣的是CodeInput小部件,但它仅与Pygments一起使用,因为突出显示了代码语法,不能将其用于拼写检查器中DB中的目标单词。

有什么想法吗?

我当时正在考虑使用Canvas在单词下绘制红色矩形,但我不知道如何获得正确的位置和大小,因此需要在TextInput中禁用背景颜色或图像。由于CodeInput可以突出显示代码语法,所以我知道这是有可能的,但是由于没有关于此类内容的文档,因此我不知道该怎么做。

谢谢

1 个答案:

答案 0 :(得分:0)

由于您的应用程序能够从TextInput的文本中提取单词,并对照数据库进行检查,因此可以使用select_text(start, end)selection_color突出显示错误的单词。

TextInput » select_text(start, end)

select_text(start, end)
     

选择此TextInput中显示的一部分文本。

     

参数:

start
     

从哪里开始选择的textinput.text的索引

end
     

textinput.text的索引,直到显示选择为止

TextInput » selection_color

selection_color
     

所选内容的当前颜色,格式为(r,g,b,a)。

     

警告

     

颜色应始终具有小于1的“ alpha”分量,因为   选择内容将在文本之后绘制。

     

selection_color是一个ListProperty,默认值为[0.1843,0.6549,   0.8313,.5]。