我正在尝试创建一个简单的kivy软件,我需要为button.text
使用自定义的阿拉伯字体。
我已经在文件中包含了自定义字体并尝试过,但这是这样的:
我不确定这是否是编码问题,还是需要在Kivy中使用其他内容
这是我的代码:
main.py
import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window
class MyGrid(Widget):
pass
class BackOffice(App):
def build(self):
return MyGrid()
if __name__ == '__main__':
BackOffice().run()
backoffice.kv
#:import utils kivy.utils
<MyGrid>
canvas.before:
Color:
rgba: utils.get_color_from_hex('#a1d0f4')
Rectangle:
pos: self.pos
size: self.size
GridLayout:
cols: 1
size: root.width, root.height
Label:
text: 'logo here'
GridLayout:
cols: 2
Label:
text: ' vision logo goes here'
GridLayout:
cols:1
Button:
size: 700, 120
size_hint: None, None # <---
background_color: utils.get_color_from_hex('#0a74c4')
font_name: 'fonts/Shoroq-Font.ttf'
text: "إعدادت المستخدمين"
Image:
source: 'images/conference-256.png'
y: self.parent.y + 5
x: self.parent.x + 70
Button:
text:'button'
background_color: utils.get_color_from_hex('#0a74c4')
Button:
text:'button'
background_color: utils.get_color_from_hex('#0a74c4')
Button:
text:'button'
background_color: utils.get_color_from_hex('#0a74c4')
GridLayout:
cols: 3
Button:
text: 'button'
background_color: utils.get_color_from_hex('#ff0000')
Button:
text: 'button'
background_color: utils.get_color_from_hex('#0a74c4')
Label:
text: 'some text here'
*更新*
我也尝试使用基于This question的阿拉伯文整形器,但结果仍然相同!因为问题是关于Textinput
,而不是一般的文本查看。
答案 0 :(得分:1)
使用arabic.reshaper
和bidi.algorithm
的解决方案
fixture.detectChanges()
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.properties import StringProperty
import arabic_reshaper
from bidi.algorithm import get_display
Builder.load_file("main.kv")
class MyGrid(Widget):
bidi_text = StringProperty('')
def __init__(self, **kwargs):
super(MyGrid, self).__init__(**kwargs)
reshaped_text = arabic_reshaper.reshape(u"إعدادت المستخدمين")
self.bidi_text = get_display(reshaped_text)
class BackOffice(App):
def build(self):
return MyGrid()
if __name__ == '__main__':
BackOffice().run()