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

本文介绍了解决Kivy框架中文显示问题的方法,包括使用Unicode编码、指定字体文件及修改配置文件等步骤。

章节目录与知识点总览

解决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>
Kivy自学笔记包含多方面内容: ### 构建基本的 Kivy 应用 基本的 Kivy 应用需要一个`main.py`与`.kv`文件。`main.py`为主程序文件,`.kv`文件主要用于搭建窗口布局(类似于 PyQt 中的`.ui`文件)。虽然理论上可以在 Python 文件中搭建窗口布局,但本着前后端分离的原则,不建议这么做。`.kv`文件应当与应用(类)同名且为小写,若应用名为`TheLab`或`TheLabApp`(此时 Kivy 会自动忽视“App”三个字母),Kivy 会自动寻找`main.py`同路径下名为`thelab.kv`的文件。示例代码如下: ```python # main.py from kivy.app import App from kivy.uix.widget import Widget class MainWidget(Widget): pass class MyTask(App): pass if __name__ == '__main__': MyTask().run() ``` ```kv # mytask.kv MainWidget: # 启动界面 <MainWidget>: Button: # 按钮控件 text: "A" # 内部字符 size: "40dp", "40dp" # 尺寸 pos: "50dp", "100dp" # 位置 color: 1,0,0,1 # 颜色 Label: # 标签控件 text: "B" size: "100dp", "100dp" pos: "200dp", "200dp" ``` ### BoxLayout 的使用 BoxLayout 用于水平(竖直)排列子控件。示例代码如下: ```python # main.py from kivy.app import App from kivy.uix.widget import Widget from kivy.uix.boxlayout import BoxLayout class BoxLayoutTest(BoxLayout): pass class MyTask(App): pass if __name__ == '__main__': MyTask().run() ``` ```kv # 对应的.kv 文件 BoxLayoutTest: <BoxLayoutTest>: # orientation: "vertical" # 定向,默认为水平 horizontal BoxLayout: # 嵌套了一个竖直排列的子 BoxLayout orientation: "vertical" size_hint: .5, .8 # 尺寸提示 pos_hint: {'center_y':.5, 'center_x':.5} # 位置提示 spacing: '10dp' Button: # 子子 button text: "fxxk U 01" size_hint: 1, .5 color: 1,0,1,1 Button: text: "fxxk U 02" size_hint: 1, 1 color: 1,1,0,1 Button: # 子 button text: "fxxk U 1" size_hint: None, .5 # 只有尺寸提示某项为 None 时,才可使用对应的宽高按绝对尺寸控制宽高 width: '100dp' # 由于尺寸提示宽度部分为 None,使用 width 设定宽度为 100dp pos_hint: {'center_y':.5} color: 1,1,1,1 Button: text: "fxxk U 2" size_hint: .5, .5 color: 0,1,1,1 ``` ### 导入相关组件 在学习 Kivy 时,需要导入`kivy.uix`里的`Label`以及`floatlayaut`布局,示例代码如下: ```python from kivy.uix import label from kivy.app import App from kivy.uix.floatlayout import Floatlayout ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

静候光阴

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

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

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

打赏作者

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

抵扣说明:

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

余额充值