二、示例长廊(2.1概要)

2.1 示例长廊

示例长廊可以让你浏览包含在Kivy安装路径里面的许多例子。这些例子包括:
* 包含在examples/路径的示例展示了各个库的独有的能力和Kivy的特色。
* 包含在examples/demos/路径里的示例则展示乐很多Kivy的功能。
另外有更多的Kivy程序:
* 贯穿Kivy应用程序完成开发的教程。
* 在源代码子路径kivy/tests/里面的单元测试也是有用的帮助。

我们希望你在学习Kivy的道路上是充满快乐和激情的!

1) 3D旋转的猴子脑袋

这个例子展示了利用OpenGL渲染的一个旋转的3D猴子脑袋。它加载了一个Blender OBJ文件,着色器使用OpenGL's Shading Language(GLSL)语言写成,并利用了预定的回调功能。

monkey.boj文件是从Blender(一个3D制作软件)中导出的OBJ文件,该文件以文本的方式列出了顶点和脸部数据,同时被objloader.py文件中的一个类加载。simple.glsl文件是一个利用GLSL编写的简单的顶点和碎片着色器。

3Drendering__main__py

2) 部件动画

该示例展示了如何将多部分的动画应用到一个按钮部件上。当你点击按钮的时候,你将会看到按钮标签plop会以动画的方式进行移动。

Widget animation

3)应用程序生成器的组合

这个例子展示了启动一个应用程序的不同方式。如果你在命令行运行它,而没有带任何的参数,你将会在终端上看到一个菜单;你也可以添加一个'r'参数来运行它。有许多日志选项来使得调试更容易,程序的执行顺序可能更清晰。每次你在命令行运行程序,仅有一个Kivy应用被创建。

该示例使用了testkvfile.kv和app_suite_data/testkvdir.kv文件。

Suite of Application Builders

4)使用build()+return的应用程序示例

如果你在build()中返回了一个部件,或者你设置了self.root,那么一个应用程序被创建。

Application example using build() + return

5)从一个.kv文件中创建应用

该示例展示了在你的应用程序中如何暗中使用一个.kv文件。你在运行时将会看到一个全屏的标签为'Hello from test.kv'的按钮。

当Kivy实例化App的一个子类后,它会暗中搜索一个.kv文件。因为APP的子类的名称是TestAPP,所以test.kv文件会被选中,这意味着Kivy会尝试着加载文件test.kv,该文件包含了一个根部件。

Application built from a .kv file

6)在模板路径中的一个.kv文件中加载应用程序

这个示例展示了如何改变.kv文件的路径。你将会看到'Hello from tmplate1/test.ky'作为一个按钮 的标签。

由于Kivy实例化了App的子类TestApp,则变量kv_directory会被赋值。Kivy会在该路径中暗中搜索一个.kv文件以匹配子类的名称,查找template1/test.kv文件,该文件包含着根部件。

Application from a .kv in a Template Directory

7)摄像头示例

这个例子展示了摄像头的简单应用。它显示了一个带有标签为'play'的按钮的窗口,按钮用来控制打开或关闭摄像头。要注意如果没有找到摄像头,则首先查看一下gstreamer模块有没有安装,Kv语言在处理过程中会抛出一个异常。

Camera Example

8)贝赛尔曲线示例

这个例子展示了如何从一个多边形计算出的贝赛尔曲线。你将会看到一个紫色的多边形以及由次计算出来的红色的贝赛尔曲线。你可以拖动滑块来重新计算曲线。

Bezier Example

9)画布渲染强度测试

这个例子通过绘制巨大数量的小方块来测试我们的图形引擎的渲染表现。

Canvas stress

10)椭圆示例

这个例子练习绘画出Kivy的logo。屏幕上方的滑块控制着绘画的开始、停止、宽、高等。Reset按钮用来重置滑块。Logo图标图片从kivy/data路径读取,整个例子使用kv语言描述。

Circle Example

11)FBO示例

这个例子展示了使用FBO(Frame Buffer Off-screen)代替一个平的画布的布局。你可以看到一个黑色的画布和一个按钮。点击按钮将会使它左右移动。

FBO Canvas

12)平滑线条实验

这个例子展示了平滑线条关于快速渲染线条方面的特征。你将会看到多个线段构成的路径和一些控制按钮及滑块。你能添加新的点到线段上,也可以改变线的宽度和透明度;或者点击Animate 来展示一系列的sin和cos动画。

另外"Cap"和"Join"按钮是无法工作的,因为平滑线条还没有实现这个特色。

Line (SmoothLine) Experiment

13)线条扩展演示

这个例子展示了如何使用扩展线调绘图,诸如椭圆、圆、矩形等。你将会看到带有标签的各种形状。

Lines Extended Demo

14)网眼测试

这个例子展示了使用网眼模式来变形一张图片。你将会看到一排按钮在画布的下方。点击他们将会显示通过mesh.mode设置的方式来改变这张图片。

Mesh test

15)多重材质

这个例子混合了两种材质:一张字母K的图片mtexture1.png和一张橘黄色圆的材质mtexture2.png。你将会看到一个橘黄色的K剪贴到一个圆上。它使用了定制的使用GLSL(Opengl Shading Language)编写的着色器。

要注意的是mtexture1.png是一个白色的透明背景的K。

Multitexture Example

16)图片的平铺

这个例子展示了字母K的图片会在屏幕上平普。你首先会看到8行8列的字母K,同时一个标签来显示当前的尺寸。你可以试着改变窗口的大小,它仍保持8行8列。

要注意的是mtexture1.png是一个白色的透明背景的K。

Repeat Texture on Resize

17)旋转的例子

这个示例使用PushMatrix和PopMatrix来旋转一个按钮。你将会看到一个标签为Hello World的按钮旋转了45度角。

Rotation Example

18)漏字板演示

gthank:具体例子还没有测试,感觉有点像PS中的蒙板

这个例子是一个关于漏字板试图部件的漏字板图形指令的测试,当你使用了漏字板,那么在它的边界外面看不到任何东西,所有的图形仅能在漏字板内部显示。

你可以通过Touch和Draw的指令来添加一个漏字板试图。Touch down会指定它的位置,而Drag会指定它的尺寸。

Stencil demo

19)Tesselate展示

gthank:Tesselate应该叫嵌饰什么的,不知道如何翻译好

这个例子展示了关于嵌饰多边形的库的运用。你将会看到一个空心的矩形和一些控制按钮。你可以点击或拖拽来创建额外的形状,注意观察顶点的数目和屏幕上的元素。debug按钮来切换以不同的颜色来显示网格。

Tesselate Demonstration

20)材质的包裹和坐标示例

这个例子展示了如何改变材质的属性以及材质父容器的属性。你可以看到多彩的材质图片和一些控制部件。texture_example_image.png图片被渲染到一个矩形中。滑块改变材质的拷贝数目以及矩形的大小;当在矩形中的材质多于一个时,点击按钮来改变材质如何被渲染。

Texture Wrapping and Coordinates Example

21)摄像头的洗牌模式

这个例子使用了带有打开了摄像头的Scatter部件,你将会看到一个混乱的带有摄像头反馈的矩形网格。你可以拖拽矩形边框来查看有序的摄像头,或者双击再次对网格进行洗牌。

Shuffled Camera Feed Puzzle

22)Kivy Catalog

Kivy的Catalog视图部件允许交互笔记Kivy语言代码,并获得立即的更新。有可以看到两个面板,左侧的包含着.kv代码,右侧的窗口对这些代码进行渲染。你可以在左侧对代码进行编辑,右侧进行渲染。当你使用spinner button菜单时,改动将会消失。Catalog部件将会为你展示多个控制着不同部件和布局的.kv示例。

当每一个菜单选项的接口在containers_kvs路径中设置好后,Catalog接口被设置在kivycatalog.kv文件里。要添加一个新的.kv文件到Catalog中,可以添加一个.kv文件到container_kvs路径并且在kivycatalog.kv文件的ScreenManage代码段中渲染它。

Kivy Catalog

23)多次碰撞检测展示

该应用程序记录形状并且试图在数据库中匹配它们。你将会看到一个空的画布接口和一些控制按钮。当你画了一个形状后,该形状将会被添加到历史记录中,并且尝试进行匹配。如果你打开了gesture的历史表,并且添加它到数据库,则以后再画出的这个形状将会被识别。你可以在.kg文件中保准和加载这些形状数据。

该演示代码跨越了多个文件。其中弹出的('No match')信息来自helpers.py文件。

历史窗口被historymanager.py文件管理,并使用了historymanager.kv文件来描述。

数据窗口和存储被gestureDatabase.py文件管理,并使用了gestureDatabase.kv文件描述。

滑块和按钮的逻辑在settings.py文件内,并使用了settings.kv文件描述;但是实际的设置和管理在multistroke.kv文件内。

Multistroke Recognition Database Demonstration

24)基本图片视图

这个例子展示了使用scatter部件。你将会看到3个图片框架,你可以点击和拖拽、拉伸和旋转这些图片。

当kivy/data/images/background.jpg这个背景图片显示后,一些照片将从本地的图片路径中加载。pictures.kv文件描述了接口,shadow32.png文件是图片的边框,以使得这些照片看起来像是在一个图片框里。最后,android.txt文件被用来打包为Android应用程序。

对于Android设备,你可以拷贝这个路径到你的手机上的/sdcard/kivy/pictures位置。

这些图片可以在https://archive.org/details/PublicDomainImages获取到。

Basic Picture Viewer

25)动态着色器编辑器

这个例子展示了动态的顶点和片段编辑。你可以看到一个窗口对应两个编辑窗口。上面的代码框是顶点着色器,下面的是片段着色器。shadereditor.kv文件描述接口。

每当改变着色器时,着色器就会进行编译。如果没有错误,则屏幕会被更新;否则错误会在你的终端上显示。

Live Shader Editor

26)Kivy特征展示

这个例子展示了许多Kivy的特征。你会看到一个菜单列表第一个展示accordion布局。通过点击'show source'按钮,你可以查看kv语言代码,但是不能编辑。通过上方的左右箭头图标来进行滚动。

showcase.kv文件描述了主容器,展示的每一个窗口在separate.kv文件中描述;这些文件方置在data/screens路径里。当data/icon路径里面的图标被用在控制列表时,data/background.png用来作为背景。data/faust_github.jpg文件被用在Scatter窗口。这些图标来自http://www.getleface.com/free_icon_set.html.

android.txt文件被用来为Android程序打包。你可以将该路径文件拷贝到你的安卓手机/sdcard/kivy/showcase路径里。

Showcase of Kivy Features

27)触摸跟踪展示

这个例子展示了跟踪触摸。你可以看到一个基本的背景图片。当你按压鼠标时,你将会看到对应的坐标。当你拖拽时,它将会记录痕迹。额外的像压力值等信息,可以在touch.profile文件中找到。

这个程序在它的App子类中指定了一个图标。它也使用了particle.png文件来描绘痕迹。touchtracer.kv文件描述了该应用程序。

android.txt文件被用来为Android程序打包。你可以将这个路径拷贝到你的安卓设备的/sdcard/kivy/touchtracer路径里。

Touch Tracer Line Drawing Demonstration

下节预告 2.2 旋转的3D猴子脑袋

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,382评论 25 707
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,699评论 22 664
  • #正官庄##正官庄体验团##与正官庄在一起的30天# 提到@正官庄官方微博 你还只知道吃的红参产品?你out 啦!...
    张巨星520阅读 223评论 0 0
  • 持续在同一个舒适圈中徘徊的代价就是生命直径的缩短,而唯有不断的向外走,才能让生命画出一个更大的圆。对于后者来说,不...
    星魁的实验室阅读 288评论 0 1