Kivy做一个课程表App(上)


从HFUTER停止维护以来,有一段艰难的时光,没有表白墙可以刷,校园网崩了就不能看课表,于是我决心照着HFUTER做个类似的App,名字都想好了:HfutCommunity,奈何太菜又太懒,不想学java,最后了解到了kivy,开始了一段奇妙的编程旅程(开始入坑).

kivy是python的一个库,用于开发具有用户界面和多点触控应用程序。它可以在Android,iOS,Linux,OS X和Windows执行

看这简介,有没有心动,能跨平台运行!就是说写一份代码,顶1.2.3.4.5,顶5份!最重要的跨Android和iOS!多么神奇的库!

入门kivy

安装过程可百度,kivy依赖pygame,cython等库,安装过程很顺利

import kivy

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


class MyApp(App):
    def build(self):
        return Label(text='Hello world')


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

看,一个简单的App就出炉了,只有一个界面,一个Label。

一般来说,逻辑与界面最好分开,逻辑放在.py里,界面放在.kv里。如下

了解css的我,写起.kv还是比较轻松的

:github有很多kivy的例程,可以自行下载学习

进阶Kivy

来看些大神的作品,界面还是很好看的,比如
一个简单的时钟,附上该代码的下载链接https://tqraf.cn/files/clock.rar
2048小游戏,下载链接https://tqraf.cn/files/2048.rar

但是现在离HfutCommunity还远着

大师级Kivy

pydelhi

这是个开源的kivy应用程序,github项目地址https://github.com/pydelhi/pydelhi_mobile

可以自行运行查看,就是有个坑,kivy不支持中文!就算在注释里添加中文也不行,编码格式包含GBK也会报错。支持中文的方法就是添加中文字体,下面会谈到

em..注释为什么会报错?不晓得,我删掉注释就是了

好,终于来了个正经的error:UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 522: illegal multibyte sequence

奇怪了,检查了代码里没有中文,怎么还报gbk的错误?还是来看看错误吧

还是很好找的,从蓝色文件链接上看,第二个main.py是程序入口,一个一个查看,最终定位到\network\__init__.py

目测是open()函数读取文件时没有用utf-8编码,加上encoding='utf-8'

好,再运行,成功了
这界面,是真的不错,而且用的原生的kivy
这个项目对我帮助还是挺大的,就他这个页面管理的机制很合理,方便修改,数据存储,所以我就照着pydelhi的结构,开始构建我的HfutCommunity

然而只完成了一小部分就停了,原因下篇更新,到此成果如下


就不放更多的图了,请暂时无视界面美观性。哈哈,当然先写组件和功能,再整理UI啦


文章作者: Tqraf
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Tqraf !
评论
  目录