Kivy 中文文檔指引
標(biāo)簽: Python Kivy Android
[TOC]
官網(wǎng)鏈接
基于版本 Release 1.0.8-dev
前言
由于個(gè)人的原因需要使用到Kivy框架,所以本著學(xué)習(xí)的態(tài)度嘗試去翻譯Kivy開發(fā)文檔。第一次翻譯英文開發(fā)指南類型的文檔,翻譯內(nèi)容盡可能做到和原作者表達(dá)的內(nèi)容一致,由于中文和英文某些詞匯、語句表達(dá)會(huì)不同,目前暫時(shí)還沒做更細(xì)致的修正處理。同時(shí)翻譯如果有錯(cuò)誤,請(qǐng)歡迎交流和指正,可以聯(lián)系zhu603809832@163.com。
第一部分 用戶指引
這部分的內(nèi)容主要是解釋Kivy背后設(shè)計(jì)的基本理念和解釋為什么你想要使用Kivy這套框架。然后繼續(xù)討論相關(guān)的體系結(jié)構(gòu)并展示如何使用這套框架在短時(shí)間內(nèi)創(chuàng)建出出色的應(yīng)用程序。
第一章 編程理念
如果你想了解Kivy是關(guān)于什么內(nèi)容和它由什么構(gòu)成的,以下的內(nèi)容將逐步為你展開
1.1 為什么使用Kivy
為什么使用Kivy呢?畢竟現(xiàn)在有很多現(xiàn)有的免費(fèi)工具集(框架或者平臺(tái)等)可以使用。例如Qt和Flash,這兩個(gè)解決方案現(xiàn)在是被廣泛作為應(yīng)用開發(fā)的選擇。這些眾多的解決方案已經(jīng)支持了多點(diǎn)觸控。那到底是什么造就了Kivy呢?
1.1.1 新穎
Kivy是為了今天和明天而誕生的。日新月異的人機(jī)交互方式正在不斷的發(fā)展。對(duì)于多點(diǎn)觸控,開發(fā)工具對(duì)其的支持變得尤為重要。特意為了這種新的交互方式,我們從底層開始重新架構(gòu)Kivy。相對(duì)于以往看起來“建立良好”但帶著沉重歷史負(fù)擔(dān)的舊開發(fā)工具,這樣意味著我們能夠在人機(jī)交互方面能夠考慮更加的全面。我們并不打算讓計(jì)算機(jī)處于現(xiàn)有模型的束縛(比如單指針鼠標(biāo)鼠標(biāo)交互)。相反,我們想讓你探索其中的可能性,這才是Kivy與眾不同之處。
1.1.2 高效
Kivy 是高效的。這適用于應(yīng)用程序的開發(fā)速度,也適用于應(yīng)用程序的執(zhí)行速度。我們已經(jīng)使用很多方法去優(yōu)化Kivy。例如通過充分利用現(xiàn)有編譯器的能力,在C語言層級(jí)上實(shí)現(xiàn)對(duì)執(zhí)行時(shí)間非常敏感的功能。更重要的是,我們采用了更加明智的算法去盡可能降低開銷。在某些任務(wù)和算法的地方,我們也使用GPU,今天的圖形顯卡的計(jì)算能力已經(jīng)遠(yuǎn)遠(yuǎn)超過今天的CPU,這就是為什么我們?cè)噲D讓GPU盡可能的工作,從而大大提高性能。
1.1.3 敏捷靈活
Kivy是靈活的。這樣意味著它可以在各種不同的設(shè)備上運(yùn)行,包括Android支持的智能手機(jī)或者平板電腦。我們已經(jīng)支持了主流的操作系統(tǒng)(Window,Linux,OSX)?!懊艚荨币舱f明Kivy的快節(jié)奏發(fā)展使它能夠很快適應(yīng)新技術(shù)。不止一次,我們添加了對(duì)新外部設(shè)備和軟件協(xié)議的支持。有時(shí)候甚至這些設(shè)備還沒有正式發(fā)布的。Kivy還可以與大量不同的第三方解決方案結(jié)合使用。例如在Window系統(tǒng)上,我們支持WM_TOUCH多點(diǎn)觸摸,這樣意味著任何具有window 7 筆和觸摸驅(qū)動(dòng)程序的設(shè)備都可以與Kivy一起工作。在蘋果OSX系統(tǒng)上,你可以使用蘋果的多點(diǎn)觸摸設(shè)備,比如觸控板和鼠標(biāo)。在Linux系統(tǒng)上,可以使用HID內(nèi)核輸入事件。除此以外,我們還支持了TUIO和一些其他的輸入源。
1.1.4 專注
Kivy是專注的。你可以通過幾行代碼就能實(shí)現(xiàn)一個(gè)簡(jiǎn)單的應(yīng)用程序。Kivy框架使用的是Python語言,而Python是一門通用性強(qiáng),功能強(qiáng)大,易于使用的編程語言。另外,我們創(chuàng)建了一種新的描述語言——Kivy語言。它用于定義復(fù)雜的用戶界面。這門語言可以讓你快速設(shè)置,連接,排列你應(yīng)用程序的每個(gè)元素。我們認(rèn)為讓你專心于應(yīng)用程序本質(zhì)功能的實(shí)現(xiàn)更甚于聚焦其他繁瑣沉重的事情。
1.1.5 資金支持
Kivy是由專業(yè)的人員踴躍參與開發(fā)的。它是由一個(gè)社區(qū)和商業(yè)支持開發(fā)的解決方案,是有資金支持的。我們一些核心人員以開發(fā)Kivy作為生計(jì)的。Kivy可以說,它不是由一個(gè)業(yè)余的人員開發(fā)的小型實(shí)驗(yàn)性項(xiàng)目,它可是認(rèn)真的。
1.1.6 免費(fèi)
Kivy可以免費(fèi)使用。你不必為此付出代價(jià)。如果你賣一個(gè)使用Kiy框架的應(yīng)用程序賺錢,你也不必要付出一毛錢。
第二章 安裝
我們盡可能不去重復(fù)造輪子,而是推出創(chuàng)新的內(nèi)容。因此,我們將重點(diǎn)是放在了我們自己的代碼上,并在可能得情況下使用其他已有第三方高質(zhì)量的庫(kù)去搭建Kivy。鑒于Kivy提供了一些豐富特性,我們還是需要一些其他的依賴庫(kù)。如果你不需要使用某些特定的功能(例如視頻播放),是不需要某些依賴。然而Kivy確實(shí)需要一種依賴,它就是<font color=#FF0000>Cython</font>。
另外,你需要的是<font color=#FF0000>Python</font> 2.x (不是3.x) 版本的解釋器。如果你想啟用(例如打開一個(gè)Window窗口),音頻/視頻播放或者拼寫矯正等特性,則必須要有額外的依賴。對(duì)于這些需求,我們分別推薦使用PyGame,Gst-Python和Enchant。
其他可選的庫(kù)(可以互換)有:
- OpenCV2.0 ——攝像機(jī)輸入
- PIL —— 圖像和文本顯示
- Pycairo —— 文本顯示
- PyEnchant —— 拼寫校正
- PyGame —— Window創(chuàng)建,圖像和文本顯示,音頻播放(譯者:我覺得這是Python為數(shù)不多的游戲引擎)
- PyGST —— 音頻/視頻播放和攝像機(jī)輸入
不要驚慌!我們不要求你自己安裝所有這些東西。相反,我們創(chuàng)建了良好的可移植包,你可以直接使用它們,因?yàn)樗鼈円呀?jīng)包含平臺(tái)所需的包。我們只想讓你知道默認(rèn)的替代方案,并給你一個(gè)關(guān)于Kiy在內(nèi)部使用的東西的概述。
2.1 穩(wěn)定版本
最近穩(wěn)定的版本可以從Kivy官方網(wǎng)站 http://kivy.org/#downloads 進(jìn)行獲取。請(qǐng)按照安裝步驟在你所需要的平臺(tái)上進(jìn)行安裝。
2.1.1 在Window平臺(tái)進(jìn)行安裝
對(duì)于Windows,我們提供了我們稱之為“壓縮包”的內(nèi)容。你不必安裝任何額外的東西,只是解壓和運(yùn)行:
- 從http://kvy.org/y下載下載最新版本
- 解壓縮包
- 然后,在解壓縮包中,有一個(gè)名為KIVY.BAT的腳本,使用它來啟動(dòng)任何KiVy應(yīng)用程序,下文會(huì)有所描述
啟動(dòng)一個(gè)Kivy應(yīng)用程序
Send-To的方法
你可以通過使用Send-To菜單去執(zhí)行一個(gè).py文件
- 創(chuàng)建 一個(gè) kivy.bat的快捷方式
- 打開Explorer資源瀏覽器,切換到Shell:SendTo的位置
- 將Kivy.bat快捷方式移動(dòng)到該目錄
- (可選)將其重名為Kivy <Kivy-版本號(hào)>
然后你可以執(zhí)行程序通過以下步驟:
- 鼠標(biāo)右鍵.py文件
- 選擇Send-to Kivy
雙擊啟動(dòng)的方法
為了雙擊啟動(dòng)Kivy應(yīng)用程序,一開始需要做一些操作步驟:
- 右鍵你想要啟動(dòng)的主要py文件
- 從出現(xiàn)的菜單中,選擇 “打開方式”
- 瀏覽目錄,選擇kivy.bat文件所在的位置,并選擇它
- 勾選始終總是以該打開方式打開py文件(如果你不想每次雙擊py文件重復(fù)總要使用該步驟)
- 完成,打開py文件
下次你雙擊py文件的時(shí)候,就會(huì)以Kivy對(duì)應(yīng)的python版本去啟動(dòng)py文件。
注意:在Window平臺(tái),我們必須關(guān)聯(lián)好Phton版本,因?yàn)槟J(rèn)情況下它不安裝在Window上(不像Mac或者Linux系統(tǒng))。通過上面的步驟,你可以給Kivy設(shè)置好Python的版本。通常情況,這不是太困難的一件事情。因?yàn)樗皇荘ython的正常版本,在模塊搜索路徑中添加了必要的第三方庫(kù)。如果您遇到意外問題,請(qǐng)與我們聯(lián)系。
命令行啟動(dòng)的方法
如果你想使用最近穩(wěn)定的kivy版本去做開發(fā),我們提供了另外一個(gè)替代方法——命令行。你需要一個(gè)小型的GNU 系統(tǒng)替代你現(xiàn)有的系統(tǒng)。使用msysGit
當(dāng)你安裝msysGit的時(shí)候,你需要注意下內(nèi)容:
- 不要替代Window自帶的Shell命令行窗口
- Check Out代碼和提交代碼,不要使用CLRF對(duì)代碼文件行末進(jìn)行替換。
安裝完畢以后,就會(huì)在你桌面出現(xiàn)"Git Bash"圖標(biāo)。這既是我們所需要的命令行工具:
- 啟動(dòng)“Git Bash”
- cd <kivy解壓縮包所在路徑>
- source kivyenv.sh <kivy解壓縮包絕對(duì)路徑>
現(xiàn)在你可以通過命令行 啟動(dòng) kivy程序:
python <filename.py>
同時(shí),其他腳本或者二進(jìn)制程序也可以使用了
- cython
- gcc /make ...
- easy_install
- gst-inspect-0.10
最近的Window壓縮包包含以下內(nèi)容:
- 最新穩(wěn)定版的Kivy
- Python 2.7.1
- Glew 1.5.7
- Pygame 1.9.2
- Cython 0.14
- MingW
- Gstreamer
- SetupTools
2.1.2 在MacOS X平臺(tái)進(jìn)行安裝
注意:這個(gè)方法目前僅僅是在Mac OSX 10.6 Snow Leopard 64-bit上進(jìn)行過測(cè)試。對(duì)于更早的版本10.6或者10.6 32位,你需要自己安裝一些組件。我們推薦你使用homebrew工具去做這個(gè)事情。
對(duì)于Mac OS X10.6之后的版本,我們提供了一個(gè)已經(jīng)包含依賴包的Kivy.app。你可以從我們Google代碼項(xiàng)目下載。它是一個(gè).dmg文件,包含以下內(nèi)容:
- Kivy.app
- Readme.txt
- 案例文件夾
- 在shell中使用,安裝kivy命令的腳本
安裝Kivy,你必須:
- 從http://kivy.org/#downloads下載最近的版本
- 雙擊打開
- 拖拽Kivy.app文件到你應(yīng)用程序文件夾
- 閱讀Readme.txt里面的內(nèi)容
啟動(dòng)任意的kivy應(yīng)用程序
你可以通過拖拽應(yīng)用程序的主文件main.py到Kivy.app圖標(biāo)去啟動(dòng)Kivy應(yīng)用程序,你可以嘗試對(duì)案例文件夾里面的內(nèi)容進(jìn)行這樣的操作。
從命令行啟動(dòng)
如果你想從命令行啟動(dòng)Kivy程序,在你拖拽Kivy.app到應(yīng)用程序文件夾以后,只需要雙擊 Make Symlinks腳本??梢酝ㄟ^以下測(cè)試,查看是否生效:
- 打開Open Terminal.app 運(yùn)行 Kivy。你應(yīng)該可以看到Python提示。
- 然后
Import kivy. 如果接著沒有錯(cuò)誤提示,那就表明已經(jīng)成功 - 執(zhí)行
kivy youapplication.py
2.1.3 在Ubuntu進(jìn)行安裝
下面的說明是針對(duì)Ubuntu的,但是對(duì)于其他Linux發(fā)行版(例如,Debian、opensuse、fedora等),它們應(yīng)該以類似的方式工作。顯然,你也需要調(diào)整命令。
Ubuntu 10.10 (Maverick)
非常遺憾的是,目前沒有kivy包在Ubuntu的倉(cāng)庫(kù)里面。我們正在努力改變,暫時(shí)你可以用以下的方法解決
$ sudo apt-get install python-setuptools python-pygame python-opengl \ python-gst0.10 python-enchant gstreamer0.10-plugins-good cython python-dev \ build-essential libgl1-mesa-dev libgles2-mesa-dev
$ sudo easy_install kivy
如果你之前已經(jīng)安裝kivy了,你可以通過以下的方法進(jìn)行升級(jí)
$ sudo easy_install --upgrade kivy
從命令行進(jìn)行啟動(dòng)
我們正在醞釀一些演示案例。這些案例是打包在壓縮包里面的。首先你也要了解easy_install 已經(jīng)在你當(dāng)前的Kivy包里面已經(jīng)安裝了。接著運(yùn)行以下指令
$ python -c "import pkg_resources; print pkg_resources.resource_filename(’kivy’, ’../share/kivy-examples’)"
你應(yīng)該有一個(gè)類似的這樣的路徑: /usr/local/lib/python2.6/dist-packages/Kivy-1.0.4_beta-py2.6-linux-x86_64.egg/share/kivy-examples/
切換到案例所在的文件夾,按照以下步驟進(jìn)行操作:
# launch touchtracer
$ cd <path to kivy-examples>
$ cd demo/touchtracer
$ python main.py
# launch pictures
$ cd <path to kivy-examples>
$ cd demo/pictures
$ python main.py
如果你不太了解Unix系統(tǒng)和符號(hào)鏈接相關(guān)內(nèi)容,為了方便訪問,你可以在你的home主目錄創(chuàng)建一個(gè)鏈接。例如:
- 從上面的命令行中獲取案例的路徑
- 粘貼到你的控制臺(tái)
$ ln -s <path to kivy-examples> ~/
- 然后你可以在你的home主目錄訪問kivy案例了
$ cd ~/kivy-examples
2.1.4 在安卓中進(jìn)行安裝
注意:目前為止,安卓版本還沒有被完全支持。關(guān)于相關(guān)的信息可以查看Kivy on Android相關(guān)內(nèi)容
請(qǐng)注意,Kivy是一個(gè)框架,在手機(jī)上安裝Kivy本身是還無用處的,Kivy不是一個(gè)應(yīng)用程序。
也就是說,我們提供了一個(gè)“執(zhí)行器”,允許你把你的Kivy應(yīng)用程序推到你的手機(jī)上。
通過一個(gè)簡(jiǎn)單的接口執(zhí)行它。未來我們將單獨(dú)提供打包您KiVy應(yīng)用程序的指引。
安裝Kivy的執(zhí)行器Launcher,你按照以下的步驟:
- 在安卓市場(chǎng)中查找Kivy Launcher
- 點(diǎn)擊“安裝”
- 選擇你手機(jī)的型號(hào),接著完成
現(xiàn)在你可以把Kivy的應(yīng)用程序放置到SD卡上Kivy所在的目錄位置。更多內(nèi)容會(huì)在Kivy on Android更多說明。
安裝樣例:
警告:這些案例并不是最終辦法,它們僅僅是用作Kivy在安卓環(huán)境中的測(cè)試案例
- 下載Kivy Test For Android
- 解壓內(nèi)容到你的SD卡上到目錄/sdcard/kivy
- 運(yùn)行執(zhí)行器launcher,選擇對(duì)應(yīng)的kivy測(cè)試案例
2.2 開發(fā)版本
開發(fā)版本是針對(duì)開發(fā)人員和測(cè)試人員的。注意,當(dāng)運(yùn)行開發(fā)版本時(shí),
你自己冒著一些風(fēng)險(xiǎn)在運(yùn)行潛在的有問題的代碼。要使用開發(fā)版本,您將首先需要安裝依賴項(xiàng)。然后你必須在電腦上設(shè)置Kivy便于開發(fā)。為此,請(qǐng)閱讀Contributing相關(guān)內(nèi)容。
2.2.1 安裝依賴
要安裝Kivy的依賴項(xiàng),請(qǐng)按照下面的指南為您的平臺(tái)進(jìn)行相關(guān)的操作。
Ubuntu
對(duì)于Ubuntu,只需輸入以下命令即可安裝所有必要的包:
$ sudo apt-get install python-setuptools python-pygame python-opengl \
python-gst0.10 python-enchant gstreamer0.10-plugins-good cython python-dev \
build-essential libgl1-mesa-dev libgles2-mesa-dev
2.2.2 安裝Kivy用于開發(fā)
現(xiàn)在您已經(jīng)安裝了所有所需的依賴項(xiàng),現(xiàn)在是下載和編譯Kivy的開發(fā)版本的時(shí)候了:
$ # Download Kivy from GitHub
$ git clone git://github.com/tito/kivy.git
$ cd kivy
$ # Compile:
$ python setup.py build_ext --inplace -f
如果你有make命令可用,你也可以使用下面的快捷方式編譯(與上面最后命令相同):
$ make
如果要修改KiVy代碼本身,請(qǐng)將Python PATH環(huán)境變量設(shè)置為指向在你的復(fù)制出來的備份。這樣你就不必在每一個(gè)微小修改之后安裝(setup.py安裝)。Python會(huì)把Kivy從你的備份中導(dǎo)入。
或者,如果您不想對(duì)KiVy本身做任何更改,您也可以運(yùn)行(用管理員權(quán)限執(zhí)行,例如SUDO):
$ python setup.py install
如果你想為KiVy代碼庫(kù)貢獻(xiàn)代碼(補(bǔ)丁,新的特性),請(qǐng)閱讀Contributing相關(guān)內(nèi)容。
第三章 編程指南
3.1 快速開始
這個(gè)章節(jié)解釋了如何創(chuàng)建一個(gè)簡(jiǎn)單的Kiy“Hello World”程序。假設(shè)你已經(jīng)
安裝了KiVy。如果不這樣,就轉(zhuǎn)到安裝章節(jié)。我們這次使用的是Python 2.x 的版本。
3.1.1 創(chuàng)建應(yīng)用程序
import kivy
kivy.require(’1.0.6’) # replace with your current kivy version !
from kivy.app import App
from kivy.uix.button import Button
class MyApp(App):
def build(self):
return Button(text=’Hello World’)
if __name__ in (’__android__’, ’__main__’):
MyApp().run()
保存為文件名main.py。
若要運(yùn)行應(yīng)用程序,請(qǐng)按照相關(guān)操作系統(tǒng)的說明進(jìn)行操作:
Linux系統(tǒng)
$ python main.py
Windows系統(tǒng)
$ python main.py
# or
C:\appdir>kivy.bat main.py
Mac OS X系統(tǒng)
$ kivy main.py
安卓系統(tǒng)
Android應(yīng)用程序需要一些補(bǔ)充文件才能在Android上運(yùn)行。
一個(gè)窗口應(yīng)該打開,顯示一個(gè)唯一的按鈕(標(biāo)簽“helloWorld”)覆蓋整個(gè)窗口面積。這就是它所有內(nèi)容。

那這些代碼到底實(shí)現(xiàn)了什么功能呢?
- 首先,我們導(dǎo)入Kivy,并檢查當(dāng)前安裝的版本是否足以滿足我們的應(yīng)用程序。
如果沒有,將自動(dòng)啟動(dòng)異常,并防止應(yīng)用程序在運(yùn)行時(shí)崩潰。
您可以閱讀kivy.require()函數(shù)的文檔以獲取更多信息。 - 我們導(dǎo)入App類,以便能夠?qū)λM(jìn)行派生。通過對(duì)這個(gè)類進(jìn)行子類繼承,增加了一些新的特性,以便能夠被Kivy框架進(jìn)行處理
- 接下來,我們導(dǎo)入Button類,以便能夠創(chuàng)建帶有自定義標(biāo)簽的按鈕實(shí)例。
- 然后,我們基于App類創(chuàng)建我們的應(yīng)用程序類。我們實(shí)現(xiàn)了build()函數(shù)
能夠返回按鈕的實(shí)例。此實(shí)例將用作控件樹的根對(duì)象(因?yàn)槲覀兎祷剡@個(gè)對(duì)象)。 - 最后,我們?cè)趹?yīng)用程序?qū)嵗姓{(diào)用Run() 去啟動(dòng)Kiy進(jìn)程,這時(shí)候我們的應(yīng)用程序?qū)嵗呀?jīng)包含在里面。
3.2 怎么閱讀文檔
文檔是分為兩部分:
- 編程指南:這是一個(gè)必讀關(guān)于Kivy基礎(chǔ)內(nèi)容,特別是如果你從來沒有以前做過GUI編程。
- API:解釋所有的函數(shù)、類、方法
3.2.1 導(dǎo)入一個(gè)類
API部分是從源代碼自動(dòng)生成的。如果你使用任何類,它會(huì)像這樣生成:

Button類 在“Kiyy.uix.button”模塊中。所以如果你想在代碼中導(dǎo)入該類,可以這樣
from kivy.uix.button import Button
3.3 配置環(huán)境
許多環(huán)境變量可用于控制KiVy的初始化和行為。例如,用于設(shè)置Cairo為文本渲染方式,通過以下實(shí)現(xiàn):
$ KIVY_TEXT=cairo python main.py
環(huán)境變量可以在導(dǎo)入Kivy之前進(jìn)行設(shè)置
import os
os.environ[’KIVY_TEXT’] = ’cairo’
import kivy
3.3.1 配置
KIVY_USE_DEFAULTCONFIG 如果在Envion中找到此名稱,Kivy將不會(huì)讀取用戶配置文件。
3.3.2 路徑配置
這是1.0.7的新特性。你可以控制擴(kuò)展或者模塊的默認(rèn)位置,以及kivy數(shù)據(jù)存儲(chǔ)位置。
- KIVY_DATA_DIR Kivy的數(shù)據(jù)位置,默認(rèn)是<kivy path>/data
- KIVY_EXTS_DIR Kivy擴(kuò)展的位置,默認(rèn)是<kivy path>/extensions
- KIVY_MODULES_DIR Kivy的模塊位置,默認(rèn)是<kivy path>/modules
3.3.3 控制內(nèi)核的實(shí)現(xiàn)
kivy.core 嘗試為你的平臺(tái)選擇最合適的實(shí)現(xiàn)。對(duì)于測(cè)試或者自定義安裝,你可能想設(shè)置選擇器為指定的實(shí)現(xiàn)。
- KIVY_WINDOW 用于創(chuàng)建窗口的實(shí)現(xiàn),值:pygame
- KIVY_TEXT 用于渲染文本的實(shí)現(xiàn),值:pil,cairo,pygame
- KIVY_VIDEO 用于渲染視頻的實(shí)現(xiàn),值:gstreamer,pyglet
- KIVY_AUDIO 用于播放音頻的實(shí)現(xiàn),值:gstreamer,pygame
- KIVY_IMAGE 用于渲染圖片的實(shí)現(xiàn),值:pil,pygame
- KIVY_CAMERA 用于獲取攝像機(jī)的實(shí)現(xiàn),值:gstreamer,opencv,videocapture
- KIVY_SPELLING 用于拼寫的實(shí)現(xiàn),值:enchant,osxappkit
- KIVY_CLIPBOARD 用于剪貼板的實(shí)現(xiàn),值:pygame,dummy
3.4 架構(gòu)預(yù)覽
我們想花費(fèi)一些時(shí)間去闡述是如何從軟件工程的角度設(shè)計(jì)Kivy的。這是理解所有內(nèi)容協(xié)同工作的關(guān)鍵。如果只是查看代碼,只會(huì)理解一個(gè)非常粗略的看法。但是因?yàn)檫@個(gè)方法對(duì)大多數(shù)用戶來說都是令人畏懼的。
第二節(jié)詳細(xì)說明了實(shí)現(xiàn)的基本思路。您可以跳過本節(jié)并遲些再參考。但我們建議至少略讀一下粗略的概述。
KiVy由幾個(gè)我們將在下面解釋的構(gòu)造所組成的。