python - kivy 标签中的多行文本(python-bidi)

标签 python label kivy persian

我有一个用波斯语显示多行文本的标签

kv文件:

    <FarsiLabel@Label>:
        font_name: 'tabassom'

    FarsiLabel:
        text: set_text('پیروزی  برای افرادی امکان پذیر است که از مبارزه دست نمی کشند\n')
        text_size: self.size
        halign: 'center'
        color: utils.get_color_from_hex('546E7A')

设置文本方法:

    def set_text(text):
        text = unicode(text, 'utf-8')
        result = arabic_reshaper.reshape(text)
        result = get_display(result)
        return result

结果(不正确):

enter image description here

正确结果(gimp):

enter image description here

我在python-bidi get_display方法中发现了问题,但我不知道如何解决

问题是:如何解决这个问题?

最佳答案

这就是 bidi.algorithm.get_display 的工作原理,它颠倒了字母的顺序。所以你认为它是第一个词是输出中的最后一个词。

你应该在字符中检测标签的宽度,然后自己在行中进行分割。然后在每一行上应用 get_display

  • 第 1 行: پیروòی براو اورادو امکان پذیر است که اò مورادь
  • 第 2 行:دست نمی کشند

关于python - kivy 标签中的多行文本(python-bidi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235319/

相关文章:

python - Django ( python ): DatabaseError : x Table has No Column named y

python - 对 csv 读取分割一切感到困惑

python - Kivy:GridLayout 总是从左到右然后向下,你能从上到下然后从左到右吗?

ios - 向标签添加模糊 View ?

c++ - 如何清除qt creator中的标签

android - Kivy:python-for-android,如何查看 public.mp3 的内容

python - 导入错误 : No module named kivy

python - 在 Python 中替换三元运算符的最佳方法是什么?

python - 在 Python 2 中修改 URL 组件

drracket 中的标签、goto 命令