Python 如何在Kivy TextInput中使用.svg图形?

Python 如何在Kivy TextInput中使用.svg图形?,python,python-3.x,svg,kivy,Python,Python 3.x,Svg,Kivy,我最近发现了一组我希望能够在文本中使用的表情符号。它们是.svg格式的,我不知道如何插入它们。我有一个TextInput来输入消息,还有一个自定义小部件,它使用TextInput在之后显示文本。我非常感谢任何帮助、链接、文章或任何东西。Edit2: 正如@RyanP在评论中解释的那样,我假设字体包含表情符号的图像,因此您只需要使用您的字体(或kivy直接使用的字体之一)并为每个表情符号添加/替换该字体中的表情符号图像 这肯定会帮助你,也会帮助你。是关于导入SVG的文档的一部分 如果不可能做这样的

我最近发现了一组我希望能够在文本中使用的表情符号。它们是.svg格式的,我不知道如何插入它们。我有一个
TextInput
来输入消息,还有一个自定义小部件,它使用
TextInput
在之后显示文本。我非常感谢任何帮助、链接、文章或任何东西。

Edit2:

正如@RyanP在评论中解释的那样,我假设字体包含表情符号的图像,因此您只需要使用您的字体(或kivy直接使用的字体之一)并为每个表情符号添加/替换该字体中的表情符号图像

这肯定会帮助你,也会帮助你。是关于导入SVG的文档的一部分

如果不可能做这样的事情,我仍然会在下面留下我的答案


我不知道
TextInput
是否能够做这样的事情——将.svg或任何图片插入自身,因为它可以呈现文本

然而,我可以看到一种解决方法,例如为每个表情符号制作一些文本等价物或标记-
[smileemoji]
。然后,在提交文本后,创建一个函数,用emojis替换标记。但是,它不会以编写时的方式与标签一起使用,因为它也会单独呈现文本

我的看法:

  • 您可以使用与文本大小相同的标签,然后放置表情符号,然后使用另一个标签和剩余文本。但是在包装它时会遇到问题,因为您无法像第二个示例中那样断开一行(至少我不知道如何断开),从而使它保持为单个小部件

    • 1:
      blablabla
      emoji
      剩余文本

    • 2:bla-bla-bla-bla-bla
      剩余的

      文本

  • 作为第二种选择,我建议您制作一个标签,然后:

    • 表情符号必须具有恒定的大小
    • 为每个标记在文本中创建一个特殊字符,该字符的大小将保持不变(使用标记)-我建议您使用高度类似方形的东西
    • 将与特殊字符宽度相同的
      图像
      放置在
      标签
      顶部,这样它在文本中的行为就像图像一样,但实际上它将是另一个小部件
第二个选项对我来说似乎是合乎逻辑的,因为
标签
将处理包装,您需要查找和设置的唯一内容是屏幕上文本中该字符的恒定大小和位置(以便您可以定位
图像
小部件-而不是字符串中的位置)

如果您想继续使用
TextInput
作为输出管理器,没有问题,但是你必须自己在
TextInput
中管理特殊角色的大小,如果你的输出管理器像
TextInput
那样在聚焦/散焦时改变颜色,那么可能是最丑的部分-处理
图像
小部件的颜色,这样看起来就不会奇怪了

还有滚动,你也需要处理它,这样你的表情就不会无缘无故地在标签上浮动,或者在文本更改时停留在标签的顶部

总之,您的表情符号将是透明的,或者其背景颜色将与输出管理器的颜色一致

编辑:


如果您只想要一些表情符号,请放弃图像想法,使用标记并替换为unicode。

合适的占位符是unicode表情符号。@RyanP是的,我知道表情符号使用unicode占位符,但这无助于他将其呈现为文本输入:-/他可能只看到空白,或者看不到?不是占位符,实际的Unicode表情符号。哦,那太好了。在这种情况下,我假设一种字体可以保存表情符号的图像,因此他只需要制作一种自定义字体,这很容易,而且有很多免费工具。