kivy 之 设置自定义字体

163 阅读1分钟

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()