开源Python UI框架:Kivy
Kivy是一个可用以快速创建新颖用户界面应用的开源Python库,比如可以用它来创建多点触摸的应用程序,它具备跨平台特性,目前发行有Windows、MacOS、Linux以及Android版本。作为一个开源框架,Kivy具备以下特性:A.百分百免费使用;B.基于 LGPL3协议 开源,对商业化应用友好;C.跨平台,支持Windows、MacOS、Linux以及Android;D.允许在不同的平台上运行同一套代码;E.稳定以及有完善的API文档;F.通过OpenGL ES 2.0对硬件进行加速;G.自然支持大部分的输入协议或者输入设备;H.基于Python的简单API……等等。
一、下载安装
Kivy的所有安装包可通过其下载页面找到,不同的版本分别有对应的安装文档。如下图所示,这里我们以MacOS版本为例。
下载到Kivy-1.0.7-osx.dmg包之后,将Kivy.app安装到Applications文件夹下去,它打包的一系列的程序都将安装到Kivy.app下面,此时我们可以通过双击APP启动。但是我想大部分的Geek更喜欢在Command Line下启动。这个Kivy开发团队已经为您考虑到了,所以安装包里提供了一个建立软连接的脚本:make-symlinks,双击它就可以在/usr/local/bin/下创建一个软连接,指向kivy的一个script脚本。
ln -s /Applications/Kivy.app/Contents/Resources/script /usr/local/bin/kivy
个人不喜欢这种随便加软连接的行为,所以在环境变量里加上了:
alias kivy=’/Applications/Kivy.app/Contents/Resources/script’
效果是一样的。
二、创建Kivy实例
我们先创建一个简单的APP,要实现的效果是,当在界面上点击时,输出我们想要说的话。代码如下:
- #-*- coding:utf-8 -*-
- import kivy
- from kivy.app import App
- from kivy.uix.widget import Widget
- from kivy.uix.button import Button
- class myApp(App):
- def build(self):
- #创建一个Button实例
- btn = Button(text=‘Say Hello to ShowMuch.com‘, font_size=30)
- #绑定点击事件。
- btn.bind(on_press=self.callback)
- return btn
- #触发事件。
- def callback(self, instance):
- print ‘Hello ShowMuch.com‘
- if __name__ == ‘__main__‘:
- myApp().run()
将代码保存为example.py,下面我们通过kivy example.py来运行它,效果图如下:
三、在Kivy中使用模板
上面我们了解了Kivy的基本应用,但是,要构建一个漂亮的用户界面,显然光有这些是不够的,那么为了解决这个问题,Kivy也引入了模板技术,通过模板技术,一方面可以让Python程序员专注于逻辑设计,另一方面也降低了后续代码的维护难度,下面我们来看一个基本的模板实例:
- #-*- coding:utf-8 -*-
- import kivy
- from kivy.app import App
- class myApp(App):
- pass
- if __name__ == ‘__main__‘:
- myApp().run()
这段代码非常之简单,当我们运行这段代码时,Kivy会自动去当前目录下寻找一个叫my.kv的模板文件,如果存在,则会把这个文件加载进来,并进行展示,如果不存在,由会出错,my.kv的代码如下:
- #-*- coding:utf-8 -*-
- Widget:
- Button:
- text: "Hello www.ShowMuch.com"
- width:200
- height:50
- pos:(500,200)
- Button:
- text: "Fuck The GFW……."
- width:180
- height:70
- pos: (200, 200)
Kivy的模板代码也很好理解,在上面的模板里面,我们定义了两个按钮分别指定了不同的高度和宽度,以及不同的位置,用以显示不同的内容。效果图如下:
四、结语
总体来说,Kivy还是一款相当令人惊艳的NUI Framework,其简单、高效以及方便的可扩展,都令人印象深刻,是一个非常值得关注的开源项目。