带你一起学kivy第一天

1 首先是安装百度即可
2 helloword

from kivy.app import App
from kivy.uix.button import Button
class Hellokiby(App):

    def build(self):
        return Button(text="hello kivy")


if __name__ == '__main__':
    Hellokiby().run()

Kivy中文编程指南*
Kivy 是什么?
Kivy 是一个开源的 Python 框架,用于快速开发应用,实现各种当前流行的用户界面,比如多点触摸等等。
Kivy 可以运行于 Windows, Linux, MacOS, Android, iOS 等当前绝大部分主流桌面/移动端操作系统。
Kivy 基于 Python,界面文件和程序文件相互分离的设计思路,设计简洁优雅,语法易学,适合新人入门。
目前 Kivy 的官方文档还不算很完善,中文翻译版本之前也有过,但往往没有进行持续更新,或者内容覆盖不全面,所以我们这次来一个长期持久的跟进。同时期待你的参与!
如果你想参与进来,可以加入我们的 Kivy 交流QQ群号:248136053,也可以关注我的知乎专栏
从去年开始的Kivy 编程指南中文翻译项目,今天基本算是弄完了,把 Kivy Programming Guide 里面的全部内容翻译了一遍。
当然了,质量还是不怎么样好,所以希望大家多批评指正,我会尽快改正。
最开始用 Kivy 的时候,感觉有各种各样的 bug ,觉得安装和配置各种繁琐扯皮麻烦,心情也容易变得特别臭。
然后开始翻译文档的时候,也还是容易经常变得很暴躁,尤其是遇到一些原文的语法错误、逻辑错误、自己鬼扯也扯不通顺的地方等等。
但是后来我逐渐地开始钦佩这些创建了 Kivy 的人们,我意识到他们也跟我一样是一群热爱 Python 的人,想为更多的同样使用 Python 的开发者提供一个完整的工具链,以便于能更简洁轻快地实现跨平台开发。
所以,我觉得 Kivy 是一个因为热爱而驱动去追寻自由的项目,这也让我逐渐对 Kivy 产生了更多的好感。
事到如今我可能并不一定会有机会深入使用 Kivy 去开发,也依然希望 Kivy 能够发展壮大,生根发芽,开花散种,给更多的跟我一样初入门无所适从的新手一个友好又高效的选择。+
我对 Kivy 官方文档的翻译,暂告一段落。后面的 API 翻译,有一位知乎上的朋友表示有兴趣进行,一位非常年轻有为的少年。看到现在的青少年人都有如此的学习动力和探索精神,不由得让我感慨时代发展之快,自己奔四的路上,还有幸结识了众多初升的太阳。我相信他们会在未来闪耀,那个时代一定更美好。

Kivy中文编程指南:我为什么对Kivy官方文档进行翻译
从去年开始,我陆续翻译了一些Kivy官方文档中的开发指南的内容,地址在这里。
然后我又觉得有必要找一个更大的平台,以便于能给更多人提供一点便利,所以我又开了一个知乎专栏。
然而新年这一阵,我做了个手术,身体状况不太好,感觉理解能力和表达能力也有所下降(其实本来也不行),所以我就想,不如按照之前ThinkPython的中文翻译那样,直接把翻译稿开源放到Github吧,地址在这里。虽然我并没有想出来这样有什么更好的。
接触Kivy时间不长,一年多前最开始知道有这个项目的,当时的观感很差,因为遇到若干个Bug,反馈了之后也没见他们有什么动静。然后时间长了,发现跨平台的Python除了QT基本就只有这个了,相比之下,这个好歹不那么庞大,还是挺好玩的。但也就这样了,没有进一步关注。
然后是要写GeoPython,一些基础的方法都实现了之后,遇到了一些数学上的问题,然后学了一些数学相关的内容,大概有了解决思路之后,才意识到,TMD没有GUI啊,这样常规的地球科学领域的同行们根本懒得看对不对?日常用户才懒得吭哧吭哧学习如何在Bash或者Powershell之下使用iPython运行某个脚本对不对?所以我需要GUI,然而QT太庞大繁杂了,衡量了一下自己的智力水平,估计至少要花费半年才能大概入门。所以我又捡起来Kivy了。
这个过程中我发现Kivy相关的中文资料还真不多,那我就从最基础的官方文档开始翻译一下吧,好歹自己边学习边相当于做笔记,以教促学,还能给人提供一点有用的参考,哪怕一丁点用处也好。+
就像我当年给人辅导研究生的C++和考博英语一样,其实也是给自己的持续学习找一个持久的动力,也是争取有一点能够积攒努力产生一个突破口。就像我的启蒙老师许先生当年给我讲的庞中华老前辈一样,一点一点积累总会有收获。
我这些翻译的水平良莠不齐,其中有些简单的部分,我基本可以直接进行双语转换,这就不费什么力气。而由于我在编程的经验和水平两方面都比较差,有的部分一些术语名词翻译得不伦不类,所以我又只能心虚地标记上英文,避免对读者产生太严重的误导。
但我还是会继续下去的,学习和翻译两个过程还不能停下来。我不能因为自己现在三十多岁了而且水平还很差,就停止学习提高的尝试,因为一旦停下来,就更是一点希望都没有了,那就是直接向命运举白旗投降了。
虽然时代已经不同了,我还是很钦佩王江民老前辈,专注和持久而创造了传奇。我没有那么大的野心,也不奢求什么辉煌成就,只是觉得有生之年,做点不后悔的事情吧。

Kivy 中文安装指南
译者的话: 接触Python有一段时间了,之前翻译过ThinkPython2E,我也仍然还是个很菜很弱很入门的外行人。 我接下来翻译的关于Kivy的各种内容,不出意外的话也必将充满了各种低级错误。 如果这些错误有影响到大家阅读理解,提前表示一下歉意。 特别希望大家能把错误的地方指出来,让我学习的同时也及时改正。 我的编程水平很差,然而我热爱计算机这一工具,所以我喜欢做各种探索; 我的英语水平也差,不过我喜欢从英语世界发现有意思的事物并且分享给中文世界的朋友们。 本次翻译将仅仅翻译官方正式版部分的安装指南,每夜版以及更进阶的安装内容,不做翻译。 为什么呢? 一来是我自身水平有限,二来你都折腾每夜版了还不好好学英文还要看别人翻译也太不靠谱了对不对?+以下是对 Kivy 官方网站安装文档部分的翻译,下面三个链接是原文地址: Installation on Windows Installation on Linux Installation on Mac OS+Windows系统安装Kivy指南自从1.9.1版本开始,Kivy 官方提供了二进制 wheels 文件,可以用安装Kivy以及所需的一切依赖包到一个已经安装好的Python环境中,在下文会有讲解。+此外还有每夜版wheels文件,可供用户安装,或者用于将之前安装的Kivy更新到新版本;另外本文的后文中也会讲解如何将Kivy安装到自定义位置,而不是安装到默认的site-packages文件夹。+特别注意【译者注:这段内容是对官方文档比较忠实的翻译和还原,其中提到的MinGW和Python3.5的兼容问题,翻译者没遇到也没有测试过,因为没有Windows的机器。在Mac和Linux上3.5和3.6都成功安装了Kivy,运行过程也没发现问题。】+目前因为MinGW和Python3.5的兼容问题,在Windows平台上还没有办法通过Python3.5来使用Kivy,至少相当一段时间内是没指望了,更多细节参考这里的这个issue。 想要解决这个问题,需要用MSVC来编译的3.5,不过目前还没能实现,所以如果你搞定了MSVC编译的话一定反馈一下。+必要前提要使用Kivy,首先就得安装Python。Python有好多版本,你可以同时安装其中的好多个,如果你在其中某一个版本的Python里面要使用Kivy,就要在这个版本里面单独按照一次Kivy,其他版本要使用Kivy需要另外再进行安装,就是说每一次安装Kivy只对一份Python环境有效。+安装过程安装了Python之后,打开命令行工具cmd,然后按照下面的命令来进行Kivy的安装。+1 首先要保证已经安装了最新的pip和wheel:+python -m pip install --upgrade pip wheel setuptools
2 然后安装必要的依赖包(其中gstreamer大小接近90MB,如果不需要用,就可以跳过不安装这个包:+python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy.deps.gstreamer --extra-index-url https://kivy.org/downloads/packages/simple/
3 如果上一步都成功了没什么报错,就可以按照Kivy了:+python -m pip install kivy
4 在环境变量中添加一些路径到PATH来避免遇到各种issues (在你的python.exe所在的路径下运行下面的命令):+set PATH=%PATH%;%cd%\share\sdl2\bin;%cd%\share\glew\bin
到现在为止就搞定了,你就可以在这份Python环境中通过import kivy命令来导入和使用Kivy了。+特别注意如果你遇到了permission denied或者访问被拒绝之类的错误提示,你可以试试以管理员权限来运行命令行工具cmd。+Linux系统安装Kivy指南使用包管理器进行安装本节是给各种发行版用对应的deb或者rpm之类的包进行安装s .deb/.rpm/…+Ubuntu / Kubuntu / Xubuntu / Lubuntu (13.10 Saucy Salamander以及之后更新的版本)1 首先要根据你的喜好来选择一个PPA源添加到你的系统里:+(译者注:这里稳定版和每夜版二选一就可以,如果要体验最新特性,可以使用每夜版,但是如果用于长期使用追求稳定,推荐用稳定版,二者千万不要同时添加,避免出现混乱和错误。)+sudo add-apt-repository ppa:kivy-team/kivy #稳定版
sudo add-apt-repository ppa:kivy-team/kivy-daily #每夜版
2 然后就要用包管理器来更新一下包列表了:+sudo apt-get update
3 更新列表完毕之后,如果没有错误,就可以安装了:+sudo apt-get install python-kivy #Python2 用这个来安装
sudo apt-get install python3-kivy #Python3 要加一个3
sudo apt-get install python-kivy-examples #可选的样例代码
Debian (8.0 Jessie或者更新的版本)特别注意 Debian 7 Wheezy 已经不支持了,你至少要升级到Debian 8 Jessie 才能安装Kivy。+1 通过Synaptic新立得包管理器把下面的PPA源添加到你的sources.list列表中,手动添加也可以:+Jessie/Testing:#稳定版:

deb http://ppa.launchpad.net/kivy-team/kivy/ubuntu trusty main

#每夜版:

deb http://ppa.launchpad.net/kivy-team/kivy-daily/ubuntu trusty main
Sid/Unstable:#稳定版:

deb http://ppa.launchpad.net/kivy-team/kivy/ubuntu utopic main

#每夜版:
deb http://ppa.launchpad.net/kivy-team/kivy-daily/ubuntu utopic main
2 添加了源之后,就是要添加一些GPG key到你的apt keyring里面了,运行下面的命令:+#非root用户:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A863D2D6

#root用户:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A863D2D6
3 然后跟Ubuntu里面那个类似,更新列表完毕之后,如果没有错误,就可以安装了:+sudo apt-get update #安装之前一定要先这样更新一下列表
sudo apt-get install python-kivy #Python2 用这个来安装
sudo apt-get install python3-kivy #Python3 要加一个3
sudo apt-get install python-kivy-examples #可选的样例代码
Mint/Bodhi/Suse/Gentoo 这部分省略Mint的安装基本与对应的Ubuntu版本一样,Bodhi估计用的人不多我懒得翻译了,OpenSuse/Gentoo 的用户应该比较有经验了还用得着我翻译么?+Fedora1 在终端里添加repo(注意版本不要弄错):+#Fedora 18:
sudo yum-config-manager --add-repo=http://download.opensuse.org
/repositories/home:/thopiekar:/kivy/Fedora_18/home:thopiekar:kivy.repo

#Fedora 17:
sudo yum-config-manager --add-repo=http://download.opensuse.org
/repositories/home:/thopiekar:/kivy/Fedora_17/home:thopiekar:kivy.repo

#Fedora 16:
sudo yum-config-manager --add-repo=http://download.opensuse.org
/repositories/home:/thopiekar:/kivy/Fedora_16/home:thopiekar:kivy.repo
2 跟Ubuntu和Debian里面一样,添加源之后还是要用包管理器更新一下包列表。+3 更新列表之后通过包管理器就可以安装python-Kivy和python-Kivy-examples了。+在虚拟环境中安装必备的依赖包Cython一定要注意,这里超级重要,不同版本的Kivy只能用特定版本的Cython配合才能使用,二者一定要匹配,关系如下表:+KivyCython1.80.20.21.90.21.21.9.10.23SDL2框架相关的依赖包以Ubuntu为例在下面的命令样例中,用python和python-dev就表明是给Python2安装,而python3和python3-dev是针对Python3的。+# 先要安装这些必备的组件,注意上面刚提示过,如果要用Python3,在python后面加上一个3就可以了:
sudo apt-get install -y
python-pip
build-essential
git
python
python-dev
ffmpeg
libsdl2-dev
libsdl2-image-dev
libsdl2-mixer-dev
libsdl2-ttf-dev
libportmidi-dev
libswscale-dev
libavformat-dev
libavcodec-dev
zlib1g-dev
特别注意在某些特定的Linux版本上,你可能会收到一个与ffmpeg包有关的错误信息。这种情况下,就可以用libav-tools替换掉上文命令中的ffmpeg,另一种解决方法是使用ppa来安装ffmpeg,使用的命令如下所示:+sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install ffmpeg
要在虚拟环境中安装Kivy了首先要确保Pip, Virtualenv 和 Setuptools 这几个包都更新到最新:+sudo pip install --upgrade pip virtualenv setuptools
然后创建一个名为"kivyinstall"的新的虚拟环境,这时候你有两种选择:+第一种是用系统自带的默认Python解释器:virtualenv --no-site-packages kivyinstall
第二种是设定一个指定位置的Python解释器,这里举例就假设要用的解释器路径在 /usr/bin/python2.7virtualenv --no-site-packages -p /usr/bin/python2.7 kivyinstall
建立好虚拟环境之后,就是进入里面了:+. kivyinstall/bin/activate
千万要注意,这里要安装正确的Cython版本:+pip install Cython==0.23
然后就可以在这个虚拟环境里面安装Kivy的稳定版了:+pip install kivy
如果要用开发版本的Kivy,就换成下面的命令来安装:+pip install git+https://github.com/kivy/kivy.git@master
古老的PyGame相关的依赖包Ubuntu 系统首先还是要安装一大堆必要的系统组件了:+sudo apt-get install -y
python-pip
build-essential
mercurial
git
python
python-dev
ffmpeg
libsdl-image1.2-dev
libsdl-mixer1.2-dev
libsdl-ttf2.0-dev
libsmpeg-dev
libsdl1.2-dev
libportmidi-dev
libswscale-dev
libavformat-dev
libavcodec-dev
zlib1g-dev
Fedora 系统Fedora 系统就要用yum来实现组件安装:+sudo yum install
make
mercurial
automake
gcc
gcc-c++
SDL_ttf-devel
SDL_mixer-devel
khrplatform-devel
mesa-libGLES
mesa-libGLES-devel
gstreamer-plugins-good
gstreamer
gstreamer-python
mtdev-devel
python-devel
python-pip
OpenSuse 系统这里示范的是用zypper作为包管理器:+sudo zypper install
python-distutils-extra
python-gstreamer-0_10
python-enchant
gstreamer-0_10-plugins-good
python-devel
Mesa-devel
python-pip

sudo zypper install -t pattern devel_C_C++
然后又到了在虚拟环境中安装Kivy的时候了首先要确保Pip, Virtualenv 和 Setuptools 这几个包都更新到最新:+sudo pip install --upgrade pip virtualenv setuptools
然后创建一个名为"kivyinstall"的新的虚拟环境,这时候你有两种选择:+第一种是用系统自带的默认Python解释器:virtualenv --no-site-packages kivyinstall
第二种是设定一个指定位置的Python解释器,这里举例就假设要用的解释器路径在 /usr/bin/python2.7virtualenv --no-site-packages -p /usr/bin/python2.7 kivyinstall
建立好虚拟环境之后,就是进入里面了:+. kivyinstall/bin/activate
千万要注意,这里要安装numpy以及正确的Cython版本:+pip install numpy
pip install Cython0.23
这里注意,如果你不想用sdl2,而想要用pygame,你可以通过export USE_SDL2=0来强制使用pygame。这样一来,Kivy在安装过程中找不到sdl2的链接,就会自动设置这个值为0,然后尝试用pygame来构建。+pip install hg+http://bitbucket.org/pygame/pygame
接下来就可以在这个虚拟环境里面安装Kivy的稳定版了:+pip install kivy
如果要用开发版本的Kivy,就换成下面的命令来安装:+pip install git+https://github.com/kivy/kivy.git@master
虚拟环境中安装额外的包在该虚拟环境中安装开发版的buildozer:+pip install git+https://github.com/kivy/buildozer.git@master
安装开发版plyer+pip install git+https://github.com/kivy/plyer.git@master
其他的两个可能用到的包:+pip install -U pygments docutils
从命令行中启动Kivy官方提供的样例代码中有一些是可以在安装配置好Kivy环境后立即就能运行的,这些例子就集成在Kivy包之内。所以,如果你要尝试这些样例,你得实现确定好easy_install把你当前在用的Kivy安装到了哪里:+python -c “import pkg_resources; print(pkg_resources.resource_filename(‘kivy’, ‘…/share/kivy-examples’))”
然后估计你会得到一个路径了,类似下面这样: (译者注:这个路径是根据上面那个命令来输出的,每个人不同配置都产生不同结果,千万别无脑复制哦!)+/usr/local/lib/python2.6/dist-packages/Kivy-1.0.4_beta-py2.6-linux-x86_64.egg/share/kivy-examples/
然后你知道位置了,就进入这个路径,然后运行一下样例吧。 比如你可以尝试一下触控追踪的样例touchtracer:+cd cd demo/touchtracer
python main.py
这还有一个图片示意程序pictures:+cd cd demo/pictures
python main.py
If you are familiar with Unix and symbolic links, you can create a link directly in your home directory for easier access. For example:+如果你对Unix和符号链接比较熟悉,你可以把这个目录在你的home目录里面创建一个链接,这样以后访问更方便,举例如下:+1 通过上面演示过的命令获取样例代码所在位置;+2 把获取的路径补齐到下列命令中,然后粘贴到终端中:+ln -s cd ~/kivy-examples
3 接下来你就可以用如下这种特别简单的方式来访问样例代码了:+cd ~/kivy-examples
如果你想更省事,把Kivy程序当做常规脚本来运行(比如输入./main.py),或者双击来运行,你就需要创建一个正确的Python链接。例如下面这样:+sudo ln -s /usr/bin/python2.7 /usr/bin/kivy
或者如果你想要在某个虚拟环境中运行Kivy,那给对应该环境的Python做个链接就行了:+sudo ln -s /home/your_username/Envs/kivy/bin/python2.7 /usr/bin/kivy
还没完,接下来你还要在每一个main.py的开头添加如下内容作为第一行:+#!/usr/bin/kivy
特别注意一定要小心哈,Windows系统下的Python保存的文件结尾类型很可能是(CR-LF),Linux系统不会忽略掉其中的 所以你要使用这些信息,就必须赋予当前用户或者用户组所必要的权限。可以通过如下命令实现:+sudo chmod u+r /dev/input/eventX
上面这个是给当前用户赋予权限,如果要给当前用户组权限,可以用下面这个命令实现:+sudo chmod g+r /dev/input/eventX
这个授权是非永久性的,这次授权后可用,以后又要重新授权才能用。所以有个更好的永久解决方案,就是把当前用户添加到有权限的用户组中。例如,在Ubuntu系统里面,你可以把这个用户添加到input这个用户组:+sudo adduser $USER input
特别注意修改完用户权限之后,你要注销然后再登录才能使用这些权限。+Mac系统安装Kivy指南使用官方提供的Kivy.app特别注意官方提供的Kivy.app仅仅适用于OS X 10.7以及更新版本的系统(都是64位的)。对10.7之前的系统以及10.7的32位系统的用户,你就只能自己手动安装各种组件了。建议通过 homebrew 来安装。+对OS X 10.7 64位版本以及更新版本系统,Kivy官方提供了一个Kivy.app的包,里面集成好了所有需要的依赖包。可以从这个链接来下载压缩包,解压缩之后就能发现一个名为Kivy.app的应用文件。+要怎么安装呢?具体思路如下:+ 1 从官网的这个链接下载压缩包,其中Kivy2.7z用的是Python 2,而Kivy3.7z用的是Python 3。+ 2 使用解压缩工具把压缩包进行解压,可以试试Keka这个应用。+ 3 把解压缩出来的Kivy2.app或者Kivy3.app这两个文件当中选择一个,重命名成Kivy.app,复制到应用程序目录/Applications 下,这个过程可以在终端中通过下面的命令来实现+sudo mv Kivy2.app /Applications/Kivy.app
4 然后是创建一个名为kivy的系统链接,以便于方便访问kivy环境来启动app:+ln -s /Applications/Kivy.app/Contents/Resources/script /usr/local/bin/kivy
5 样例代码以及所有常规的Kivy工具都可以在/Applications/Kivy.app/Contents/Resources/kivy 这个目录里面找到了。+ 6 译者注:你完全可以同时拥有Kivy2.app和Kivy3.app,可以不重命名他们,而直接把这两个都复制到/Applications/下,然后用如下方式分别创建名为kivy2和kivy3的链接(这样以后你就可以通过kivy2来使用Python2版本的Kivy,而用kivy3来使用Python3版本的Kivy了。):+ln -s /Applications/Kivy2.app/Contents/Resources/script /usr/local/bin/kivy2
ln -s /Applications/Kivy3.app/Contents/Resources/script /usr/local/bin/kivy3
现在你就可以在终端中用Kivy脚本文件来启动Kivy的app了,也可以把你的main.py直接拽到终端中就能运行了。+安装模块OS X上的Kivy使用自己集成的一个python环境,只在你用kivy命令的时候才被激活。所以要在这里安装模块,要在pip命令前面加上kivy -m的前缀,如下所示(记得把替换成你要安装的模块名):+kivy -m pip install
这些模块安装到哪里了呢?安装位置在Kivy.app目录内的venv目录下:+Kivy.app/Contents/Resources/venv/
如果你安装一个二进制的模块,例如kivy-garden,这些二进制文件就只能在venv一级以上的目录使用:+kivy -m pip install kivy-garden
上面这个命令安装的garden的链接库文件,只有通过如下命令激活这个虚拟环境了才能使用:+source /Applications/Kivy.app/Contents/Resources/venv/bin/activate
garden install mapview
deactivate
二进制文件安装直接复制到/Applications/Kivy.app/Contents/Resources/venv/bin/这个目录就行了。+安装其他框架Kivy.app自带了SDL2和Gstreamer这两个框架。要增加其他的框架让Kivy使用,可以按照如下思路实现:+git clone http://github.com/tito/osxrelocator
export PYTHONPATH=~/path/to/osxrelocator
cd /Applications/Kivy.app
python -m osxrelocator -r . /Library/Frameworks/.framework/
@executable_path/…/Frameworks/.framework/
一定要记得把替换成你需要的框架名。osxrelocator这个工具是用来改变框架中的链接库目录,这样就可以让这些框架可以在Kivy.app中使用了。+启动任意一个Kivy应用要运行Kivy应用,只要把源码拖拽到Kivy.app图标上,就可以了。样例代码目录中的任何Python文件都可以拿来试试。+从命令行启动如果要在命令行中运行Kivy,把Kivy.app复制到应用目录后,双击Make Symlinks script 这个脚本文件,就可以了。要测试是否成功,可以按照如下方式:+ 1 打开终端,输入:+kivy
你就应该能得到一个Python解释器环境了。+ 2 然后在这个Python解释器内输入如下代码:+import kivy
如果什么反应都没有,没有出错,那就说明搞定了。ut errors, it worked.+ 3 经过上面的验证,说明配置成功了。这样在命令行终端中运行Kivy应用就很简单了,只是执行一下脚本就可以,如下所示:+kivy yourapplication.py
使用HomeBrew安装Kivy使用HomeBrew和Pip也可以安装Kivy,具体步骤如下所示:+1 首先要先安装homebrew,然后安装必备组件:+brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
2 然后是通过pip安装cython 0.23和kivy(一定要注意,要确保设置环境变量USE_OSX_FRAMEWORKS=0):+pip install -I Cython
0.23
USE_OSX_FRAMEWORKS=0 pip install kivy
3 如果不想安装稳定版而想使用开发版,第二步就要改用如下命令了: +USE_OSX_FRAMEWORKS=0 pip install https://github.com/kivy/kivy/archive/master.zip
使用MacPorts和Pip来进行安装特别注意如果你希望自己的Kivy应用能够支持视频播放,就得手动安装gstreamer。可以供过MacPorts来安装py-gst-python port. 用MacPorts和Pip安装Kivy的过程如下:+ 1 安装Macports+ 2 安装Python 3.4并且设定成默认的:+port install python34
port select --set python python34
3 然后安装Pip并设置为默认:+port install pip-34
port select --set pip pip-34
4 使用Macports安装必备组件:+port install libsdl2 libsdl2_image libsdl2_ttf libsdl2_mixer
5 使用Pip安装cython 0.23和kivy(一定要注意,要确保设置环境变量USE_OSX_FRAMEWORKS=0):+pip install -I Cython==0.23
USE_OSX_FRAMEWORKS=0 pip install kivy
6 如果不想安装稳定版而想使用开发版,第二步就要改用如下命令了:+USE_OSX_FRAMEWORKS=0 pip install https://github.com/kivy/kivy/archive/master.zip
特别注意如果你在Mac系统下使用Kivy-Designer的时候遇到如下错误:+[WARNING ] stderr: from designer.app import DesignerApp
[WARNING ] stderr: File “/Users/cycleuser/kivy-designer/designer/app.py”, line 27, in
[WARNING ] stderr: from kivy.garden.filebrowser import FileBrowser
[WARNING ] stderr: ImportError: No module named filebrowser
那么不要犹豫,肯定是Garden的安装位置你没有调整,你需要参考我的这篇文章来解决这个问题。

在各种流行的 Python IDE 中配置 Kivy 集成开发环境

英文原文

在 Windows 系统上配置 PyCharm 使用 Kivy
从 1.9.1 开始, Kivy 就可以安装到你系统中已有的 Python 解释器中,所以在 Windows 系统上面的安装非常简单直接。

1 在 Windows 系统上安装 Kivy;可以参考英文原版安装指南或者我博客里的安装指南,或者参考我的知乎专栏。
2 然后就在 PyCharm 里面建立或者打开你的项目就可以了。

理论上就这么简单,两步就搞定了。如果你有多个 Python 解释器,那就需要选择安装了 Kivy 的那个才行。具体步骤是在 PyCharm 里面,按照如下流程操作:

1 File 文件 -> Settings 设置 -> Project 项目 -> Project Interpreter 项目解释器
2 取消掉当前的项目解释器,选择你要用的安装了 Kivy 的 Python 解释器就好了。

这就完毕了,接下来就可以用 Kivy 来玩耍了。
在 macOS 系统上配置 PyCharm 使用 Kivy
Kivy 开发团队推荐 macOS 用户使用 homebrew 来安装 Kivy。这很简单,在 Mac 系统里面打开 Terminal 终端就可以了。下面的代码输入或者复制粘贴到终端提示符后面就可以了。
要注意这些代码特别长,所以可能因为文字换行等等导致出现多行的情况,这时候一定要注意要复制完整。
除了用 brew 和 pip 来安装 Kivy 的方法之外,还可以参考其他的详细安装指南,比如我博客里的安装指南或者我的知乎专栏。

1 安装 Homebrew

/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

2 通过 Brew 来安装 Python 3

brew install python3

或者 Python 2
brew install python

3 安装 Kivy (参考我博客里的安装指南或者我的知乎专栏)。这里一定要注意,下面的命令使用了 pip3 ,意思是说安装到了 Python3 里面,如果你要用 Python2 ,那就把下面命令中的 pip3 替换成 pip:

brew install hg sdl sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
pip3 install --upgrade pip
pip3 install cython
USE_OSX_FRAMEWORKS=0 pip3 install kivy

PyCharm 应该能选择你默认的 Python 解释器,然后(估计差不多)就是你刚刚把 Kivy 座位一个模块来安装好的那个解释器。
可以通过下面的路径来对已有模块进行检查: File 文件 -> Settings 设置 -> Project 项目 -> Project Interpreter 项目解释器
Kivy 语言自动补齐以及代码高亮
ID 为 Xuton 的一位好心朋友开发了一个扩展文件,可以提供 Kivy 语言的自动补齐和代码高亮,安装方法如下:

下载这个文件;
打开 Pycharm 的主菜单,点击 File 文件 -> Import 导入 ( 或者 Import Settings 导入设置);
选择刚刚下载的那个 jar 文件,然后 PyCharm 会弹出一个对话框让你来确认,点击 OK 就行了。
重新启动 PyCharm ,看看是不是有效果了?

更多其他 IDE
这些我就不翻译了,大家可以去看看。

How to use Python Tools for Visual Studio to develop and run Kivy Applications
kivy-eclipse-and-pydev-also-pypy
How to Set up Wing IDE for Kivy on Windows
Kv language definition file for gedit

Kivy中文编程指南:基础知识原文地址
+Kivy环境安装搭建Kivy要依赖很多Python包,比如 pygame, gstreamer, PIL, Cairo 等等还有好多。这些包并非都是必需的,要根据你的运行平台来看具体情况,有时候缺那么一两个包就可能导致安装失败,或者运行过程中出错等等,这就挺痛苦的。所以Kivy官方针对Windows和MacOS X提供了集成好关键部件的压缩包,解压缩之后直接就能用。具体的安装过程可以参考下面链接中的中文安装指南:+Kivy中文安装指南如果你非要自己从零开始安装,那最起码要确保安装有Cython和Pygame。这两个包可以通过pip来安装,如下所示:+pip install cython
pip install hg+http://bitbucket.org/pygame/pygame
pip install kivy
Kivy的开发版本也可以通过git来安装:+git clone https://github.com/kivy/kivy
make
创建一个应用创建一个Kivy应用挺简单的,大概步骤如下:+基于App类创建一个子类;把build()方法实现为返回一个控件实例(这个控件的实例也就是你整个应用的根控件)。创建一个这个类的实例,然后调用run()方法。下面的代码就是上述思路的最小化实现:+import kivy
kivy.require(‘1.0.6’) # 注意要把这个版本号改变成你现有的Kivy版本号!

from kivy.app import App # 译者注:这里就是从kivy.app包里面导入App类
from kivy.uix.label import Label # 译者注:这里是从kivy.uix.label包中导入Label控件,这里都注意开头字母要大写

class MyApp(App):

def build(self): # 译者注:这里是实现build()方法
    return Label(text='Hello world') # 译者注:在这个方法里面使用了Label控件

if name == ‘main’:
MyApp().run() # 译者注:这里就是运行了。

‘’’
译者注:这一段的额外添加的备注是给萌新的.
就是要告诉萌新们,一定要每一句每一个函数每一个变量甚至每一个符号,都要读得懂!!!
如果是半懂不懂的状态,一定得学透了,要不然以后早晚得补课.
这时候又让我想起了结构化学。
总之更详细的内容后面会有,大家加油。
‘’’
把上面的代码以文本形式复制到一个文本文件中,保存成py文件,例如main.py,然后运行,就行了。+Kivy应用的生命周期跟学习开发Android应用的时候类似,咱们首先也是要了解一下Kivy应用的生命周期(生命周期图由小涂汉化):+如上图所示,不论什么用途和目的,咱们应用的入口都是这个run()方法,在本文的样例代码中,就是“MyApp().run()”。+下面就一行一行开始详细解释了:+from kivy.app import App
为什么要导入这个App类呢?因为咱们自定义的这个App要继承这个类。这个类的位置在kivy安装目录下的kivy目录下的app.py文件中。+特别注意如果你想要深入挖掘一下,去了解这个Kivy的App类到底是怎么个内容,你可以打开这个app.py文件,亲自来看看。Kivy作者特别鼓励大家去阅读源码。Kivy基于Python,用Sphinx编写的文档,所以每个类的文档都在对应的文件内。+然后咱们回过头来,继续看本文这次的代码的第二行:+from kivy.uix.label import Label
这里一定要特别注意各种包和类的导入。"kivy.uix"这个包的作用是容纳用户界面元素,比如各种输出布局和控件。+接下来看到这一行:+class MyApp(App):
这一行定义了咱们这次的Kivy应用的基类。如果你要做修改的话,把MyApp改成你要设定的应用名字就可以了。+接着往下看:+def build(self):
在上面的生命周期图中加粗强调的部分表明,build函数所处的是要进行初始化和返回根控件的位置。根控件返回的操作在下面这一行中实现:+return Label(text=‘Hello world’)
这里我们用文本‘Hello World’对Label这一控件进行了初始化,并且返回了其实例。这个Label就是咱们这个应用的根控件了。+特别注意Python是用缩进来区别代码块的,所以一定要注意上面代码的缩进和层次,尤其是函数定义那部分。+然后咱们继续,到了真正让应用开始运行的这部分了:+if name == ‘main’:
MyApp().run()
这里对MyApp这个类进行了初始化,然后调用了这个类的run()方法。这样就初始化并启动了我们的Kivy应用了。+运行应用接下来就是要在不同操作系统平台上来运行咱们刚刚写好的应用了:+To run the application, follow the instructions for your operating system:+Linux 终端中以如下方式运行:$ python main.py
Windows 可以在CMD中以如下方式运行:$ python main.py #用系统Python运行
C:\appdir>kivy.bat main.py #用kivy.bat来运行,注意这里要设定好正确的路径
Mac OS X 跟Linux差不多,也在终端中运行,不过是要用Kivy官方提供的集成解释器:$ kivy main.py
Android 下面要运行还需要一些复杂的文件,所以等以后深入了之后再给讲解这部分了。这个应用运行之后的具体效果就是下面图片所示这样,会打开一个窗口,然后展示出一个Label,上面写着文本‘Hello World’,这个Label会覆盖该窗口的全部区域。就这样了。+修改定制这个应用接下来咱们扩展一下这个应用的功能,增加一个用户名/密码输入的页面吧。+from kivy.app import App

from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput

class LoginScreen(GridLayout):

    def __init__(self, **kwargs):
        super(LoginScreen, self).__init__(**kwargs)
        self.cols = 2
        self.add_widget(Label(text='User Name'))
        self.username = TextInput(multiline=False)
        self.add_widget(self.username)
        self.add_widget(Label(text='password'))
        self.password = TextInput(password=True, multiline=False)
        self.add_widget(self.password)

class MyApp(App):

    def build(self):
        return LoginScreen()

if __name__ == '__main__':
    MyApp().run()
在下面这行代码中,我们导入了一种名为Gri

dlayout的布局:+from kivy.uix.gridlayout import GridLayout
这个类被我们用作基类来制作根控件LoginScreen,在如下代码中进行了定义:+class LoginScreen(GridLayout):
如下代码中,我们在LoginScreen类中重新定义了初始化方法init(),这样来增加一些控件,并且定义了这些控件的行为:+def init(self, **kwargs):
super(LoginScreen, self).init(kwargs)
一定要注意这里要加super,才能把现有的新初始化方法覆盖掉继承来的旧初始化方法。另外也要注意,这里调用super的时候没有省略掉
kwargs,这是一种好习惯。+然后继续往下看:+self.cols = 2
self.add_widget(Label(text=‘User Name’))
self.username = TextInput(multiline=False)
self.add_widget(self.username)
self.add_widget(Label(text=‘password’))
self.password = TextInput(password=True, multiline=False)
self.add_widget(self.password)
上面的代码中,我们让GridLayout来管理子控件,把子控件设置为两栏,然后加上用户名和密码的Label字符显示控件和TextInput字符输入控件。+运行上面的代码,得到的窗口效果大概如下图:+尝试着重新缩放一下窗口大小,你会发现上面的控件会相对整个窗口的尺寸而自行调整大小,并不需要人为去操作了。这是因为这些控件都使用了默认的尺寸。+上面这个代码虽然有输入框,但是并没有提供用户输入的支持和处理,所以并不能进行用户名/密码验证,也没有任何其他用处。后续的练习中咱们再来深入去探讨这些功能,并且还会讲一讲空间的尺寸和位置等话题。

Kivy中文编程指南:环境变量英文原文Kivy的初始化和很多行为都可以通过各种环境变量来控制
。+例如,若要严格设定用PIL进行文本渲染,可以通过如下方式来实现:+$ KIVY_TEXT=pil python main.py
(译者注:PIL,Python Imaging Library, Python 下常用的绘图库) +所有的这些环境变量的修改设定都需要在导入Kivy之前进行,具体如下所示:+import os
os.environ[‘KIVY_TEXT’] = ‘pil’
import kivy
路径控制从Kivy1.0.7版本开始提供You can control the default directories where config files, modules and kivy data are located.+Kivy的配置文件、模块以及数据存储的默认目录,都可手动设定所在位置。+KIVY_DATA_DIR+这个是Kivy的数据目录,默认值为/data 。+KIVY_MODULES_DIR+这个是Kivy的模块目录,默认值为/modules 。+KIVY_HOME+这个是Kivy的HOME目录,该目录是用来存放本地配置文件的,必须是一个可以写入的位置。对应不同系统也有不同位置:+* Desktop: /.kivy

  • Android: /.kivy
  • iOS: /Documents/.kivy
    从Kivy1.9.0版本开始提供KIVY_SDL2_PATH+这个变量若设定了,编译Kivy的时候就会使用该位置的SDL2库文件,而不再使用系统的库文件。在环境变量PATH的开头部位就要设定好这个变量,这样在运行一个Kivy应用的时候才能也使用相同的SDL2库文件。+从Kivy1.9.0版本开始提供特别注意刚刚这个SDL2路径是用来编译Kivy的。运行程序的话就用不着了。+配置文件KIVY_USE_DEFAULTCONFIG+若设定了此环境变量,Kivy会读取制定的配置文件。+KIVY_NO_CONFIG+若设定了此环境变量,Kivy将不会读取也不会写入任何配置文件。也适用于用户配置文件夹的位置。(译者注:这句话我还没弄明白,因为没有这样尝试。)+KIVY_NO_FILELOG+若设定了此环境变量,日志将不再输出到文件内。+KIVY_NO_CONSOLELOG+若设定了此环境变量,日志将不再输出到控制台。+KIVY_NO_ARGS+若设定了此环境变量,命令行传递的参数将不会被Kivy解析和使用。也就是说,可以不用 – 定义符,就能随便创建一个使用自己参数的脚本或者应用:+import os
    os.environ[“KIVY_NO_ARGS”] = “1”
    import kivy
    从Kivy1.9.0版本开始提供限定Kivy.core核心,使用特定版本Kivy.core会尝试使用所在平台的最优实现。如果要测试或者定制安装,你可能要把选择器设定为某个特定版本的kivy.core。+KIVY_WINDOW+这一变量是用来设定如何创建窗口,可用值:sdl2, pygame, x11, egl_rpi+KIVY_TEXT+这一变量是用来设定如何渲染文本,可用值:sdl2, pil, pygame, sdlttf+KIVY_VIDEO+这一变量是用来设定如何渲染视频,可用值:pygst, gstplayer, pyglet, ffpyplayer, ffmpeg, gi, null+KIVY_AUDIO+这一变量是用来设定如何播放声音,可用值:sdl2, gstplayer, pygst, ffpyplayer, pygame, gi, avplayer+KIVY_IMAGE+这一变量是用来设定如何读取图像,可用值:sdl2, pil, pygame, imageio, tex, dds, gif+KIVY_CAMERA+这一变量是用来设定如何读取摄像头,可用值:videocapture, avfoundation, pygst, opencv+KIVY_SPELLING+这一变量是用来设定拼写,可用值: enchant, osxappkit+KIVY_CLIPBOARD+这一变量是用来设定剪切板管理组件,可用值:sdl2, pygame, dummy, android+设置单位KIVY_DPI+这个是用来设定Metrics.dpi的dpi值的。+从Kivy1.4.0版本开始提供KIVY_METRICS_DENSITY+这个是用来设定Metrics.density,像素密度。+从Kivy1.5.0版本开始提供KIVY_METRICS_FONTSCALE+这个是用来设定Metrics.fontscale,字体大小。+从Kivy1.5.0版本开始提供图形输出KIVY_GL_BACKEND+此变量用于设定使用的OpenGL后端,更多细节参考cgl.+KIVY_GL_DEBUG+此变量用于设定是否对OpenGL调用进行日志记录,更多细节参考cgl.+KIVY_GRAPHICS+此变量用于设定是否使用OpenGL ES2,更多细节参考cgl.+KIVY_GLES_LIMITS+此变量用于设定是否强制设定GLES2(默认值为启用,设置为1)。如果设定为false,Kivy将不再兼容GLES2。(译者注:这部分我不懂,就直接生硬翻译了原文,建议大家参考一下原文去理解。)如果设置为true,可能有下表中所示的潜在的不兼容情况:+Mesh indicesIf true, the number of indices in a mesh is limited to 65535Texture blitWhen blitting to a texture, the data (color and buffer) format must be the same format as the one used at the texture creation. On desktop, the conversion of different color is correctly handled by the driver, while on Android, most of devices fail to do it. Ref: https://github.com/kivy/kivy/issues/1600从Kivy1.8.1版本开始提供KIVY_BCM_DISPMANX_ID+此变量是针对Raspberry Pi树莓派平台的,用于设定所选择的视频输出端口。默认值为0,下面列表中是在vc_dispmanx_types.h这个头文件中存储的可供选择的变量值:+0: DISPMANX_ID_MAIN_LCD1: DISPMANX_ID_AUX_LCD2: DISPMANX_ID_HDMI3: DISPMANX_ID_SDTV4: DISPMANX_ID_FORCE_LCD5: DISPMANX_ID_FORCE_TV6: DISPMANX_ID_FORCE_OTHER

Kivy中文编程指南:配置修改
英文原文
Kivy的配置文件是一个名为config.ini的文本,符合标准INI格式。
找到配置文件位置
Kivy的配置文件存放在环境变量KIVY_HOME所制定的位置:
KIVY_HOME>/config.ini

在桌面平台上,默认的位置如下:
HOME_DIRECTORY>/.kivy/config.ini

所以,假设你的用户名是“tito”,在各个操作系统下的配置文件位置则如下所示:

Windows: C:\Users\tito.kivy\config.ini
OS X: /Users/tito/.kivy/config.ini
Linux: /home/tito/.kivy/config.ini

(译者注:这里要注意,tito只是原文的一个示范,相当于张三李四这样,新手可别照着复制找不到,要用自己操作系统中具体的用户名。)
在Android系统中位置如下:
ANDROID_APP_PATH>/.kivy/config.ini

假如你的Kivy应用的包名称为“org.kivy.launcher”,那么该Kivy应用的配置文件位于:
/data/data/org.kivy.launcher/files/.kivy/config.ini

在iOS上Kivy的默认配置文件位于:
HOME_DIRECTORY>/Documents/.kivy/config.ini

本地配置
有时候用户或者开发者可能需要针对特定的应用来修改配置,或者对Kivy的某个组件进行测试,比如输入模块之类的。这时候就可以用如下命令创建一份新的配置文件:
from kivy.config import Config
Config.read(file>)

set config

Config.write()

有时候本地配置只有一个.ini文件还不够用,比如说可能你要单独使用某个garden、Kivy日志或者其他什么模块,这时候就要把KIVY_HOME这个环境变量进行修改了,指定到目标位置就行:
import os
os.environ[‘KIVY_HOME’] = folder>

还有一种思路,就是在运行Kivy应用之前,在终端中手动修改一下这个环境变量:

Windows:
set KIVY_HOME=folder>

Linux & OSX:
export KIVY_HOME=folder>

在设置了KIVY_HOME之后,所指定的这个文件夹就会被当做默认的.kivy文件夹来用。
详细理解配置项
在kivy.config 模块中可以看到全部的配置项的解释。

原文地址

https://cycleuser.gitbooks.io/kivy-guide-chinese/content/14-Kivy-Android.html

你可能感兴趣的:(带你一起学kivy第一天)