为什么不可能在java中创建标记文本输入?



所以我尝试了几个月,使用不同的技术来制作标记文本。然而,随之而来的是无数的问题。然而,如果我们看到TextInput.py,我们可以看到textput使用label来显示文本。所以我试着给那个标签加上一个markup = True。然而,我没有看到好的结果。那么为什么kivy文本没有标记呢?是否可以添加一个标记。

TextInput使用标签,但它不继承Label类。即使设置了markup = True,也不会发生任何事情,因为TextInput没有该属性。文档说

The TextInput widget provides a box for editable plain text.

那么为什么kivy textput没有标记呢?

最终,因为这很难,没有人想要并且有时间实现这个功能。

是否可以添加标记。

这在技术上当然是可能的,但是您需要阅读TextInput源代码并弄清楚如何添加它。

您可以通过将MarkupLabel导入Label来扩展TextInput以创建具有标记功能的TextInput,如下所示:

from kivy.core.text.markup import MarkupLabel as Label
from kivy.cache import Cache
from kivy.graphics.texture import Texture
Cache_get = Cache.get
Cache_append = Cache.append

class MarkupTextInput(TextInput):
def _create_line_label(self, text, hint=False):
# Copy this method from TextInput with no changes

_create_line_label()方法创建一个Label,并从TextInput中的Label中使用Texture。通常使用kivy.core.text.Label,但上面提到的import导致使用kivy.core.text.markup.MarkupLabel

这将给你一个MarkupTextInput,你可以输入标记(如[b][/b])。由于光标位置不正确,因此仍然不完整。当您输入[b]时,这三个字符突然消失,但光标位置不会恢复。解决这个问题是困难的部分。也许有人能弄明白这一点。

相关内容

  • 没有找到相关文章

最新更新