在kivy中使用中文显示乱码(方框)的原因可能是编码问题或字体问题。

可以下载支持中文的字体文件ttf,我这里使用了微软雅黑细体msyhl.ttc。我们在编写布局时可以直接在相关控件上指定字体类型。

第一种:不改配置,而是在项目中指定字体
比如下载字体 msyhl.ttc 放在相对目录 ‘./linuxmi/fonts’ 下

import os
# 引入资源目录,如res目录位于项目根目录下,写相对路径(不要写绝对路径)相当于告诉kivy msyhl.ttc 字体位于res目录中
from kivy.resources import resource_add_path, resource_find
resource_add_path(os.path.abspath(‘./linuxmi/fonts’))
# 替换kivy中的默认字体,使用我们的新字体
from kivy.core.text import LabelBase
LabelBase.register(‘Roboto’, ‘msyhl.ttc’)

第2种方法:更改配置文件

第一步:复制中文字体(这里是微软雅黑)到你自己喜欢的目录下
第二步:找到配置文件并更改

Kivy的配置文件是一个名为config.ini的文本,符合标准INI格式。

找到配置文件位置

所以,假设你的用户名是“linuxmi”,在各个操作系统下的配置文件位置则如下所示:

Windows: C:\Users\linuxmi.kivy\config.ini
OS X: /Users/linuxmi/.kivy/config.ini
Linux: /home/linuxmi/.kivy/config.ini

(这里要注意的是,我的用户名是linuxmi,新手可别照着复制找不到,要用自己操作系统中具体的用户名。)

# config,ini中的原文
default_font = [‘Roboto’, ‘data/fonts/Roboto-Regular.ttf’, ‘data/fonts/Roboto-Italic.ttf’, ‘data/fonts/Roboto-Bold.ttf’, ‘data/fonts/Roboto-BoldItalic.ttf’]
# 更改为
default_font = [‘Microsoft YaHei UI’, ‘/home/linuxmi/.fonts/msyhl.ttc’]

OK,搞定,效果图见本文的插图。

发表评论

电子邮件地址不会被公开。 必填项已用*标注