问题描述
我尝试在 python kivy 中编写波斯语,但它不起作用。
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.lang import Builder
from kivy import Config
from kivy.uix.label import Label
from kivy.uix.widget import Widget
class MainApp(App):
def build(self):
return Label(text= "فارسی")
if __name__ == "__main__":
MainApp().run()
解决方法
您需要使用一些波斯字体。 我已经用阿拉伯文本完成了
您可以从 here
下载字体然后使用 arabic_reshaper 库使其成型。
pip install arabic-reshaper
你还需要 python-bidi 来翻转字母
pip install python-bidi
参考此https://github.com/mpcabd/python-arabic-reshaper
代码
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.lang import Builder
from kivy import Config
from kivy.uix.label import Label
from kivy.uix.widget import Widget
import arabic_reshaper
from bidi.algorithm import get_display
class MainApp(App):
def build(self):
reshaped_text = arabic_reshaper.reshape("فارسی")
bidi_text = get_display(reshaped_text)
return Label(text= bidi_text,font_name='Amiri-Regular.ttf',font_size=30)
if __name__ == "__main__":
MainApp().run()
输出