如何在 Python Kivy 中的 TextInput 字段中显示希伯来语文本

How to display Hebrew text in a TextInput field in Python Kivy

我正在尝试在 kivy(一个 python 包)中制作一个简单的应用程序,它从 TextInput 字段获取文本,当单击按钮时 returns 希伯来语文本将显示在另一个 TextInput 上,一切似乎都工作正常,但我遇到了一个问题,即 Kivy 中的 TextInput 字段无法显示我试图显示的希伯来语文本。

这是我得到的: 如您所见,它显示了这个奇怪的文本而不是我需要显示的文本...

我的代码,我的主脚本:

import kivy
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
import getData

class MainScreen(Widget):
    ttc = ObjectProperty(None)
    ct = ObjectProperty(None)

    def btn(self):
        self.ct.text = getData.HE_EN(text=self.ttc.text.lower())

    pass
class MyApp(App):
    def build(self):
        return MainScreen()

if __name__ == "__main__":
    MyApp().run()

我的 "my.kv" 文件:

<MainScreen>:
    ttc: ttc
    ct: ct
    GridLayout:
        size: root.width, root.height
        cols: 1
        TextInput:
            text: ""
            id: ttc
        Button:
            text: "CONVERT"
            on_press: root.btn()
        TextInput:
            text: "CONVERTED TEXT"
            id: ct

不需要向 getData.py 脚本显示 returns 希伯来语文本,因为它并不重要...

预期的结果是在 TextInput 中获得我想要的文本,即使我真的没有设法做到。 请帮助我解决我的问题,我确实需要它...

好的!所以没花很长时间,因为 discord 服务器上的某个人帮助了我,我所要做的就是切换文本区域字体,因为前一个没有希伯来语字体。为此,我下载了字体 "Arial" 并使用主脚本将其添加到我的文件夹中,我导入了 from kivy.core.text import LabelBase 然后注册了字体:LabelBase.register(name="Arial", fn_regular="Arial.ttf"),告诉 TextInput 我想设置我刚刚添加到小部件下的 .kv 文件的字体 'font_name: "Arial"' 并解决了问题。

你还应该反转用户输入的文本,我这样做了:

class HebrowTextInput(TextInput):

    def __init__(self, **kwargs):
        super(HebrowTextInput, self).__init__(font_name='DejaVuSans.ttf', halign="right", **kwargs)
        self.multiline = False

    def keyboard_on_key_down(self, window, keycode, text, modifiers):
        if keycode[1] == "backspace":
            self.text = self.text[1:]

    def insert_text(self, theText, from_undo=False):
        self.text = theText + self.text