kivy不支持中文, 如果想使用中文作为程序展示语言, 可以自行加载中文字体.
中文字体可以在这个位置下载: 站长字体
代码font = os.path.join(os.path.dirname(__file__), 'youaimoshouheiti-regular.ttf')是基于当前文件目录加载对应的.ttf字体文件.
kivy的默认字体名称为Roboto.
代码LabelBase.register('Roboto', font)是使用当前加载的字体替换kivy默认的字体, 之后在程序任何位置都会使用font对应的字体
代码LabelBase.register('自定义字体', font)是使用前文定义的变量font注册一个新的字体, 字体名称为自定义字体.
当程序需要在不同位置展示自定义字体时, 就可以通过显式指定字体的方式使用该字体: Label(text="壹", font_name='自定义字体')
以下是示例代码:
import os
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.core.text import LabelBase
font = os.path.join(os.path.dirname(__file__), 'youaimoshouheiti-regular.ttf')
LabelBase.register('Roboto', font)
LabelBase.register('自定义字体', font)
class StyledGridLayout(GridLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.cols = 2
self.rows = 2
self.add_widget(Label(text="壹", font_name='自定义字体'))
self.add_widget(Label(text="贰"))
self.add_widget(Label(text="叁"))
self.add_widget(Label(text="肆"))
class GridLayoutApp(App):
def build(self):
return StyledGridLayout()
if __name__ == '__main__':
GridLayoutApp().run()