Kivy
外觀
開發者 | Kivy組織 |
---|---|
首次發佈 | 2011年2月1日[1] |
目前版本 | 2.1.0(2022年3月6日[2]) |
原始碼庫 | |
程式語言 | Python,Cython |
作業系統 | 跨平台 |
類型 | 應用框架 |
許可協定 | MIT (自由軟件) |
網站 | kivy |
Kivy是開源Python函式庫,用於開發流動應用程式和其它採用自然用戶介面的多點觸控應用軟件。它可以在Android,iOS,Linux,OS X和Windows執行。採用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)