Kivy
多点触控应用软件
Kivy是开源Python函式库,用于开发行动应用程式和其它采用自然用户界面的多点触控应用软件。它可以在Android,iOS,Linux,OS X和Windows执行。采用MIT授权条款,Kivy是自由并且开源的软件。
开发者 | Kivy组织 |
---|---|
首次发布 | 2011年2月1日[1] |
当前版本 | 2.1.0(2022年3月6日[2]) |
源代码库 | |
编程语言 | Python,Cython |
操作系统 | 跨平台 |
类型 | 应用框架 |
许可协议 | MIT (自由软件) |
网站 | kivy |
Kivy的主要架构由Kivy组织开发,[3] 并有Python用于Android,[4]Kivy iOS,[5]和其它许多函式库被使用在所有平台。在2012年,Kivy从Python软体基金会获得$5000美元补助,用于移植Kivy到Python 3.3。[6]Kivy也支援由Bountysource赞助的树莓派。[7]
其架构包括所有建造应用程式的元素,例如:
- 支援许多种输入,例如滑鼠,键盘、触控式使用者介面(TUIO)和特定作业系统的多重触控事件,
- 只采用OpenGL ES 2的图形函式库,且根基于向量缓冲物件(Vertex Buffer Object)和著色器,
- 支援多点触控的庞大控制项,
- 一个中间语言(Kv)[8]用来简化客制控制项的设计。
Kivy改良了PyMT专案,并且推荐给新的专案采用。[9]
程式范例
编辑以下是一个按钮的Hello World程式范例:
from kivy.app import App
from kivy.uix.button import Button
class TestApp(App):
def build(self):
return Button(text='Hello World')
TestApp().run()
Kv 语言
编辑Kivy语言(Kv)是致力于描述使用者介面和与使用者互动的一种语言。就像QML,它能够简单的建造整个使用者介面并加上互动。例如,建造一个包括档案浏览器,和取消/载入按钮的对话框,它能够采用Python快速的造出基本的控制项,之后用Kv造出使用者介面。
在main.py:
class LoadDialog(FloatLayout):
def load(self, filename): pass
def cancel(self): pass
并且在相关的Kv:
#:kivy 1.4.0
<LoadDialog>:
BoxLayout:
size: root.size
pos: root.pos
orientation: "vertical"
FileChooserListView:
id: filechooser
BoxLayout:
size_hint_y: None
height: 30
Button:
text: "Cancel"
on_release: root.cancel()
Button:
text: "Load"
on_release: root.load(filechooser.path, filechooser.selection)
外部键结
编辑- 官方网站
- PyMT project (页面存档备份,存于互联网档案馆)
参考文献
编辑- ^ 存档副本. [2015-09-12]. (原始内容存档于2015-09-01).
- ^ Kivy 2.1.0. github.com. 2022-03-06 [2022-06-24]. (原始内容存档于2022-06-28).
- ^ About us, kivy.org, [2015-09-12], (原始内容存档于2015-09-01)
- ^ Python for Android, github.com, [2015-09-14], (原始内容存档于2021-01-02)
- ^ Kivy for iOS, github.com, [2015-09-14], (原始内容存档于2021-01-01)
- ^ Kivy and Python 3.3, project started, Google Groups
- ^ Kivy on Raspberry Pi, bountysource.com, [2015-09-14], (原始内容存档于2006-11-19)
- ^ Programming Guide, Introduction to the Kivy Language, kivy.org, [2015-09-14], (原始内容存档于2012-01-20)
- ^ FAQ: How is Kivy related to PyMT?, kivy.org, [2012-06-09], (原始内容存档于2017-09-21)