《Python+Kivy(App开发)从入门到实践》自学笔记:解决Kivy不能显示中文问题

章节目录与知识点总览

解决Kivy不能显示中文问题:

        Kivy目前不能支持中文,但是支持Unicode编码。可以将中文转为Unicode编码后,复制到.py或.kv文件中。

        中文转Unicode编码代码如下:

        注意:中文输入部分必须都为中文输入模式,包括标点符号。

def turn_to_unicode(string):
    res = ''
    for v in string:
        res = res + hex(ord(v)).upper().replace('0X','\\u')
        #print(hex(ord(v)).upper())
    print(string,'的Unicode编码为:',res)
    return res

if __name__ == '__main__':
    #标点符号必须是中文状态下的
    turn_to_unicode('你好,世界')

输出结果:

e84ecbcb24db44a39618b01556e0f378.jpeg

 将转换结果复制到1.3.1实例.kv文件中

<IndexPage>:
	Button:
		text:"\u4F60\u597D\uFF0C\u4E16\u754C"

 将1.3.1实例的main.py再贴一遍:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class IndexPage(BoxLayout):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)
class TestApp(App):
    def build(self):
        return IndexPage()

if __name__ == '__main__':
    TestApp().run()

运行仍然不能显示中文。具体如下

034a6830d47144f79a8f91e38e525ec5.jpeg

 可以在'C:\windows\Fonts”路径下找到微软雅黑的字体文件:msyh1.ttf,将它复制到.py文件目录下。修改.py代码,具体如下:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

#使用微软雅黑显示字体
from kivy.core.text import LabelBase
LabelBase.register('Roboto','msyh.ttf')

class IndexPage(BoxLayout):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)
class TestApp(App):
    def build(self):
        return IndexPage()

if __name__ == '__main__':
    TestApp().run()

再次运行,成功!具体如下:

b61f4559dd1741f8b15e94d3e207ff6c.jpeg

 其次,还可以通过更改配置文件的方式修改Kivy的默认文件,windows下,Kivy的配置文件为:

"C:\Users\电脑用户名\.kivy\config.ini"打开该文件,找到default_font配置,将其更改为:

default_font = ['Microsoft YaHei UI','msyh.ttf字体文件绝对路径']

即:

default_font = ['Microsoft YaHei UI','C:\Users\Administrator\.kivy\msyh.ttf']

即可。

上一篇:Python文件+.kv 文件实现“Hello world”

下一篇:大小和位置

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静候光阴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值