第一次尝试Kivy(windows+Android)

第一次尝试Kivy

iOS的Pythonista虽然是个收费app,不过总体还是不错的。 不过iOS终归没有安卓的自由。 搜索一番后,Kivy进入我的视野。

安装

先在Windows下把环境装好吧。

强烈建议使用conda,anaconda或者miniconda都行,一句conda install kivy -c conda-forge就能搞定,而pip看起来坑比较多。 不过要注意的是conda环境要新建一个基于python3.7的,最新的python3.8好像kivy不支持。

HelloWorld

在网上找一个HelloWorld的demo,运行无压力。

在这里插入图片描述

然而把字符串改为“你好世界”后,竟然显示的都是方框。 看样子kivy对中文的支持好像不行呀。

在这里插入图片描述

再搜索一番,原来这货需要指定字体呀。下载一个 DroidSansFallback.ttf 字库文件(网上大把下载)放在HelloWorld程序相同文件下,然后在程序中指定字体,能显示中文了。

在这里插入图片描述
代码如下:

# -*-coding:utf-8-*-

import kivy
#kivy.require('x.y.z')

from kivy.app       import App
from kivy.uix.label import Label

class HelloWorldApp(App):

    def build(self):
        return Label(text='你好, 世界 !', font_name="DroidSansFallback.ttf")

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

Kv Language

kivy有一个叫Kv Language的玩意,可以实现UI与代码分开,挺好的。

可以用如下代码试一下:

HelloWorld.py文件

# -*-coding:utf-8-*-

import kivy
#kivy.require('x.y.z')

from kivy.app       import App
from kivy.uix.label import Label
from kivy.lang      import Builder          # 增加一个import用来导入.kv文件

with open("hello.kv", encoding='utf-8') as f:  
    # Note the name of the .kv 
    # doesn't match the name of the App
    Builder.load_string(str(f.read()))

class HelloWorldApp(App):

    def build(self):
        #return Label(text='你好, 世界 !', font_name="DroidSansFallback.ttf")
        return Label()

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

再新建一个hello.kv文件,注意不要使用helloworld.kv,因为虽然对于上面class HelloWorldApp(App)的,相对应的会自动导入文件名为helloworld.kv文件,但是因为自动导入的kv文件的中文兼容性有问题,我们上面使用了open以utf-8解码导入了hello.kv文件。

hello.kv文件

<Label>:
    text: '你好世界!'
    font_name: './DroidSansFallback.ttf'

注意上面的kv文件中也指定了字体文件

在这里插入图片描述

在Android上运行

kivy可以打包成apk,不过我大概看了下,还是有点麻烦的。 具体可以看看 https://github.com/kivy/buildozer

不过可以先用Kivy Laucher先运行下试试。
先下载Kivy Laucher,下载地址:
https://kivy.org/downloads/1.9.0/KivyLauncher-1.9.0.0.apk

然后在安卓系统内安装。安装后桌面应该就有Kivy Laucher的启动图标了。
在这里插入图片描述
然后用电脑连接手机,在 “内部存储” 或者 “SDCard” 或者 “Storage” 里新建文件夹 kivy/hello。然后新建编辑android.txt, main.py和hello.kv,然后将他们连同DroidSansFallback.ttf字体文件一起拷贝到hello文件夹下。
在这里插入图片描述
android.txt文件

title=Hello
author=Your Name
orientation=portrait

main.py文件,好像主程序文件必须是这个文件名

# -*-coding:utf-8-*-

import kivy

from kivy.app       import App
from kivy.uix.label import Label
from kivy.lang      import Builder          # 增加一个import用来导入.kv文件

Builder.load_file('hello.kv', encoding='utf-8')   # 这次我们来用另一种方法导入kv文件,似乎简单些

class HelloWorldApp(App):

    def build(self):
        return Label()

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

hello.kv文件,一样需要指定字体,不然中文会变方框

 <Label>:
    text: '你好世界!'
    font_name: './DroidSansFallback.ttf'

文件拷贝完毕后,启动Kivy Laucher应该就可以看到名叫Hello的程序了。
在这里插入图片描述
点击它就可以运行了。(中文也ok)

在这里插入图片描述

好了,kivy初体验到此结束

貌似无痛,以后有空试试打包apk。

  • 17
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值