kivy官方教程.docx
- 文档编号:4605207
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:44
- 大小:98.66KB
kivy官方教程.docx
《kivy官方教程.docx》由会员分享,可在线阅读,更多相关《kivy官方教程.docx(44页珍藏版)》请在冰豆网上搜索。
kivy官方教程
Quickstart
ThispageexplainshowtocreateasimpleKivy“Helloworld”program.ThisassumesyoualreadyhaveKivyinstalled.Ifyoudonot,headovertotheInstallationsection.WealsoassumebasicPython2.xknowledgethroughouttherestofthisdocumentation.
Createanapplication
Thebasecodeforcreatinganapplicationlookslikethis:
importkivy
kivy.require('1.0.6')#replacewithyourcurrentkivyversion!
fromkivy.appimportApp
fromkivy.uix.buttonimportButton
classMyApp(App):
defbuild(self):
returnButton(text='HelloWorld')
if__name__=='__main__':
MyApp().run()
Saveitasmain.py.
Toruntheapplication,followtheinstructionsforyouroperatingsystem:
Linux
FollowtheinstructionsforrunningKivyapplicationonLinux:
$pythonmain.py
Windows
FollowtheinstructionsforrunningKivyapplicationonWindows:
$pythonmain.py
#or
C:
\appdir>kivy.batmain.py
MacOSX
FollowtheinstructionsforrunningKivyapplicationonMacOSX:
$kivymain.py
Android
YourapplicationneedssomecomplementaryfilestobeabletorunonAndroid.SeeKivyonAndroidforfurtherreference.
Awindowshouldopen,showingasolebutton(withthelabel‘HelloWorld’)thatcoverstheentirewindow’sarea.That’sallthereistoit.
Sowhatdoesthatcodedo?
1First,weimportKivy,andcheckifthecurrentinstalledversionwillbeenoughforourapplication.Ifnot,anexceptionwillbeautomaticallyfired,andpreventyourapplicationtocrashinruntime.Youcanreadthedocumentationofkivy.require()functionformoreinformation.
2WeimporttheAppclass,tobeabletosubclassit.Bysubclassingthisclass,yourownclassgainsseveralfeaturesthatwealreadydevelopedforyoutomakesureitwillberecognizedbyKivy.
3Next,weimporttheButtonclass,tobeabletocreateaninstanceofabuttonwithacustomlabel.
4Then,wecreateourapplicationclass,basedontheAppclass.Weextendthebuild()functiontobeabletoreturnaninstanceofButton.Thisinstancewillbeusedastherootofthewidgettree(becausewereturnedit).
5Finally,wecallrun()onourapplicationinstancetolaunchtheKivyprocesswithourapplicationinside.
Howtoreadthedocumentation
Thedocumentationisseperatedin2parts:
∙theProgrammingGuide:
it’samustreadtounderstandtheKivybasics,speciallyifyouneverdoneGUIprogrammingbefore.
∙theAPI:
allthefunctions,classes,methodsareexplained.
Importingaclass
TheAPIpartisautogeneratedfromthesourcecode.Ifyoutakeanyclass,itwillbegeneratedlikethis:
Itshouldbereadlikethis:
the“Button”classisintothe“kivy.uix.button”module.Soifyouwanttoimportthatclassinyourcode,writethat:
fromkivy.uix.buttonimportButton
Controlingtheenvironment
ManyenvironmentvariablesareavailabletocontroltheinitializationandbehaviorofKivy.
Forexample,forrestrictingtextrenderingtoPILimplementation:
$KIVY_TEXT=pilpythonmain.py
Environmentvariablecanbesetbeforeimportingkivy:
importos
os.environ['KIVY_TEXT']='pil'
importkivy
Configuration
KIVY_USE_DEFAULTCONFIG
Ifthisnameisfoundinenviron,Kivywillnotreadtheuserconfigfile.
KIVY_NO_CONFIG
Ifset,noconfigurationfilewillbereadorwrite,andnouserconfigurationdirectorytoo.
KIVY_NO_FILELOG
Ifset,logswillbenotprintonafile
KIVY_NO_CONSOLELOG
Ifset,logswillbenotprintontheconsole
KIVY_DPI
Ifset,thevaluewillbeusedinsteadofthevaluereturnedbythewindow.
Newinversion1.4.0.
Pathcontrol
Newinversion1.0.7.
Youcancontrolwhereislocateddefaultdirectoryofmodules,extensions,andkivydatas.
KIVY_DATA_DIR
LocationoftheKivydata,defaultto
KIVY_EXTS_DIR
LocationoftheKivyextensions,defaultto
KIVY_MODULES_DIR
LocationoftheKivymodules,defaultto
Restrictcoretospecificimplementation
kivy.coretrytoselectthebestimplementationavailableforyourplatform.Fortestingorcustominstallation,youmightwanttorestricttheselectortoaspecificimplementation.
KIVY_WINDOW
ImplementationtouseforcreatingtheWindow
Values:
pygame
KIVY_TEXT
Implementationtouseforrenderingtext
Values:
pil,pygame
KIVY_VIDEO
Implementationtouseforrenderingvideo
Values:
gstreamer,pyglet,ffmpeg
KIVY_AUDIO
Implementationtouseforplayingaudio
Values:
gstreamer,pygame
KIVY_IMAGE
Implementationtouseforreadingimage
Values:
pil,pygame
KIVY_CAMERA
Implementationtouseforreadingcamera
Values:
gstreamer,opencv,videocapture
KIVY_SPELLING
Implementationtouseforspelling
Values:
enchant,osxappkit
KIVY_CLIPBOARD
Implementationtouseforclipboardmanagement
Values:
pygame,dummy
ConfigureKivy
Theconfigurationfileofkivyisnamedconfig.ini,followingtheINIformatfile.
Locatingtheconfigurationfile
Thelocationoftheconfigurationfileisin:
Ifyouruserisnamed“tito”,thefilewillbelocatedat:
∙Windows:
C:
\Users\tito\.kivy\config.ini
∙MacOSX:
/Users/tito/.kivy/config.ini
∙Linux:
/home/tito/.kivy/config.ini
Understandingconfigtokens
Alltheconfigurationtokensareexplainedinthekivy.configmodule.
ArchitecturalOverview
WewouldliketotakeamomenttoexplainhowwedesignedKivyfromasoftwareengineeringpointofview.Thisiskeytounderstandinghoweverythingworkstogether.Ifyoujustlookatthecode,chancesareyouwillgetaroughideaalready,butsincethisapproachcertainlyisdauntingformostusers,thissectionexplainsthebasicideasoftheimplementationinmoredetail.Youcanskipthissectionandrefertoitlater,butwesuggestatleastskimmingitforaroughoverview.
Kivyconsistsofseveralbuildingblocksthatwewillexplaininthefollowing.
CoreProvidersandInputProviders
OneideathatiskeytounderstandingKivy’sinternalsisthatofmodularityandabstraction.Wetrytoabstractfrombasictaskssuchasopeningawindow,displayingimagesandtext,playingaudio,gettingimagesfromacamera,spellingcorrectionandsoon.Wecallthesecoretasks.ThismakestheAPIbotheasytouseandeasytoextend.Mostimportantly,itallowsustouse–whatwecall–specificprovidersfortherespectivescenarioinwhichyourappisbeingrun.Forexample,onOSX,LinuxandWindows,therearedifferentnativeAPIsforthedifferentcoretasks.ApieceofcodethatusesoneofthesespecificAPIstotalktotheoperatingsystemononesideandtoKivyontheother(actingasanintermediatecommunicationlayer)iswhatwecallacoreprovider.Theadvantageofusingspecializedcoreprovidersforeachplatformisthatwecanfullyleveragethefunctionalityexposedbytheoperatingsystemandactasefficientlyaspossible.Italsogivesusersachoice.Furthermore,byusinglibrariesthatareshippedwithanyoneplatform,weeffectivelyreducethesizeoftheKivydistributionandmakepackagingeasier.It’salsoeasiertoportKivytootherplatforms.TheAndroidportdidgreatlybenefitfromthis.
Wefollowthesameconceptwithinputhandling.Aninputproviderisapieceofcodethataddssupportforaspecificinputdevice,suchasApple’strackpads,TUIOoramouseemulator.Ifyouneedtoaddsupportforanewinputdevice,youcansimplyprovideanewclassthatreadsyourinputdatafromyourdeviceandtransformsthemintoKivybasicevents.
Graphics
Kivy’sgraphicsAPIisourabstractionofOpenGL.Onthelowestlevel,Kivyissueshardware-accelerateddrawingcommandsusingOpenGL.WritingOpenGLcodehowevercanbeabitconfusing,especiallytonewcomers.That’swhyweprovidethegraphicsAPIthatletsyoudrawthingsusingsimplemetaphorsthatdonotexistassuchinOpenGL(e.g.Canvas,Rectangle,etc.).
AllofourwidgetsthemselvesusethisgraphicsAPI,whichisimplementedontheClevelforperformancereasons.
AnotheradvantageofthegraphicsAPIisitsabilitytoautomaticallyoptimizethedrawingcommandsthatyourcodeissues.Thisisespeciallyhelpfulifyou’renotanexpertattuningOpenGL.Thismakesyourdrawingcodemoreefficientinmanycases.
Youcan,ofcourse,stilluserawOpenGLcommandsifyoupreferthat.TheversionwetargetisOpenGL2.0ES(GLES2)onalldevices,soifyouwanttostaycross-platformcompatible,weadviseyoutoonlyusetheGLES2functions.
Core
Thecodeinthecorepackageprovidescommonlyusedfeatures,suchas:
Clock
Youcanusetheclocktoscheduletimerevents.Bothone-shottimersandperiodictimersaresupported
Cache
Ifyouneedtocachesomethingthatyouuseoften,youcanuseourclassforthatinsteadofwritingyourown.
GestureDetection
Weshipasimplegesturerecognizerthatyoucanusetodetectvariouskindsofstrokes,suchascirclesorrectangles.Youcantrainittodetectyourownstrokes.
KivyLanguage
Thekivylanguageisusedtoeasilyandefficientlydescribeuserinterfaces.
Properties
Thesearenotthenormalpropertiesthatyoumayknowfrompython.Itisourownpropertiesclassthatlinksyourwidgetcodewiththeuserinterfacedescription.
UIX(Widgets&Layouts)
TheUIXmodulecontainscommonlyusedwidgetsandlayoutsthatyoucanreusetoquicklycreateauserinterface.
Widgets
Widgetsareuserinterfaceelementsthatyouaddtoyourprogramtoprovidesomekindoffunctionality.Theymayormaynotbevisible.Exampleswouldbeafilebrowser,buttons,sliders,listsandsoon.WidgetsreceiveMotionEvents.
Layouts
Youuselayoutstoarrangewidgets.Itisofcoursepossibletocalculateyourwidgets’positionsyourself,butoftenitismoreconvenienttouseoneofourreadymadelayouts.ExampleswouldbeGridLayoutsorBoxLayouts.Youcanalsonestlayouts.
Modules
I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- kivy 官方 教程