Python_开源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,要实现的效果是,当在界面上点击时,输出我们想要说的话。代码如下:

  1. #-*- coding:utf-8 -*-
  2. import kivy
  3. from kivy.app import App
  4. from kivy.uix.widget import Widget
  5. from kivy.uix.button import Button
  6. class myApp(App):
  7. def build(self):
  8. #创建一个Button实例
  9. btn = Button(text=Say Hello to ShowMuch.comfont_size=30)
  10. #绑定点击事件。
  11. btn.bind(on_press=self.callback)
  12. return btn
  13. #触发事件。
  14. def callback(selfinstance):
  15. print Hello ShowMuch.com
  16. if __name__ == __main__:
  17. myApp().run()

将代码保存为example.py,下面我们通过kivy example.py来运行它,效果图如下:

三、在Kivy中使用模板
上面我们了解了Kivy的基本应用,但是,要构建一个漂亮的用户界面,显然光有这些是不够的,那么为了解决这个问题,Kivy也引入了模板技术,通过模板技术,一方面可以让Python程序员专注于逻辑设计,另一方面也降低了后续代码的维护难度,下面我们来看一个基本的模板实例:

  1.    这段代码非常之简单,当我们运行这段代码时,Kivy会自动去当前目录下寻找一个叫my.kv的模板文件,如果存在,则会把这个文件加载进来,并进行展示,如果不存在,由会出错,my.kv的代码如下:
  1. #-*- coding:utf-8 -*-
  2. Widget:
  3. Button:
  4. text"Hello www.ShowMuch.com"
  5. width:200
  6. height:50
  7. pos:(500,200)
  8. Button:
  9. text"Fuck The GFW……."
  10. width:180
  11. height:70
  12. pos(200200)

Kivy的模板代码也很好理解,在上面的模板里面,我们定义了两个按钮分别指定了不同的高度和宽度,以及不同的位置,用以显示不同的内容。效果图如下:

四、结语
总体来说,Kivy还是一款相当令人惊艳的NUI Framework,其简单、高效以及方便的可扩展,都令人印象深刻,是一个非常值得关注的开源项目。

转载 自:http://blog.163.com/moro80@126/blog/static/166300187201161901046988/

你可能感兴趣的:(Python)