1. 苏葳的备忘录首页
  2. 编程

kivy中widget的中文字体显示

kivy android python ubuntuPython的图形界面跨平台框架Kivy使用比较方便,虽稍欠成熟,但再发展几年或许真能在移动应用开发上大发光彩。与许多外国人搞出来的新鲜东西一样,目前的Kivy里中文显示是个问题。android的默认中文字体,网上查了查,是DroidSansFallback.ttf。在自已的ubuntu12.10里搜了搜,幸运的是系统和android sdk都有这个字体,假设在目标安装的安卓手机里这字体也存在的话,如何使用呢?

Kivy有kivy.resources模块,里面有resource_find(filename),resource_add_path(path)这两个方法,先用

kviy.resources.resource_find("DroidSansFallback.ttf")

搜索,返回是None,没有找到。再用resource_add把一个包含该字体文件的路径添加进去,再用resource_find查找,则正确返回了该字体的全路径。整个流程如下:

首先创建一个label:

ll=Label(font_name=kivy.resources.resource_find("DroidSansFallback.ttf"),text=tipsstr)

运行之后,报错,大意为font_name属性不允许被设置为None。现在创建label之前,先使用

kivy.resources.resource_add_path(r'/home/kivy/android/android-sdk-linux/platforms/android-18/data/fonts')

来增加查找路径。再次运行,结果成功,证实了fond_name属性的内部是使用kivy.resources.resource_find来查找字体路径的。

另外说明下程序的编码选择:在程序首加#-*- coding:utf-8 -*-的情况下,无论label.text的串前有无加u(label1.text=u’测试中文’),均可在widget上显示出中文。print的打印输出也是中文。而设为cp936(gbk字符集)则会报错。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/502.html

发表评论

您的电子邮箱地址不会被公开。