day02 kivy簡介 一 kivy簡單使用


 一 、Kivy簡單使用

1. 創建一個kivy應用程序很簡單包括:

  • 對應用程序類進行子分類
  • 實現其build() 方法,以便返回小部件實例(小部件樹的根)
  • 實例化該類,並調用其run()  方法。
下面是一個最小應用程序的示例:
import kivy kivy.require('1.0.6') #替換為你當前的kivy版本! from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Hello world') MyApp().run()
您可以將其保存到一個文本文件中,例如,main.py,並運行它。
 

2.kivy應用程序生命周期

首先,讓我們熟悉一下Kivy應用程序的生命周期
正如您在上面所看到的,無論如何,我們進入應用程序的入口點是run()方法,在我們的例子中是“MyApp()。run()”。我們會回到這個問題,解釋每行:
from kivy.app import App
它要求您的應用程序的基類繼承自應用程序類。它現在就存在於kivy_installation_dir/kivy/app.py之中
from kivy.uix.label import Label
這里需要注意的一件重要的事情是軟件包/類的布局方式。uix模塊是包含布局和小部件等用戶界面元素的部分。
class MyApp(App):
這就是我們定義Kivy應用程序的基類的地方。只需要在這一行中更改你的應用程序MyApp的名稱。
def build(self):
如上圖所突出顯示的,顯示了Kivi應用程序生命周期的外殼,這是您應該初始化並返回根小部件的函數。這是我們在第8行中所做的:
return Label(text='Hello world')
這里我們用文本“Hello World”初始化一個標簽並返回其實例。此標簽將是此應用程序的根小部件。
 
運行后效果:

3. 自定義應用程序

GridLayout 網格布局模塊:當需要將控件排列成表格狀時。可以使用GridLayout布局方式,根據布局的配置,子控件按照自己的索引順序被分配位置。
例:讓我們稍微擴展一下這個應用程序,比如一個簡單的用戶名/密碼頁面。
代碼:
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()
 
 
運行展示:
 
嘗試重新調整窗口的大小,你會看到屏幕上的小部件會根據窗口的大小進行調整,而不需要做任何事情。這是因為小部件在默認情況下隨窗口自動調整大小。上面的代碼不處理來自用戶的輸入,沒有驗證或其他任何東西。我們將在接下來的章節中更深入地研究這個問題和小部件的大小和定位。
 
二、環境控制
許多環境變量可用於控制Kivy的初始化和行為。例如,為了將文本渲染限制為PIL實現:
$ KIVY_TEXT=pil python main.py
在導入kivy之前,應設置環境變量:
import os os.environ['KIVY_TEXT'] = 'pil' import kivy

 

2.1 控制路徑的環境變量

在1.0.7版本中的新版本。您可以控制配置文件、模塊和kivy數據所在的默認目錄。
 
KIVY_DATA_DIR: Kivy數據的位置,默認為<Kivy路徑>/數據
KIVY_MODULES_DIR: Kivy模塊的位置,默認為<kivy路徑>/模塊
KIVY_HOME:kivy的家目錄。此目錄用於本地配置,並且必須位於可寫的位置。
默認值:
Desktop: <user home>/.kivy
Android: <android app path>/.kivy
iOS: <user home>/Documents/.kivy
KIVY_SDL2_PATH:如果設置,編譯kivy時將使用此路徑中的SDL2庫和頭,而不是系統范圍內安裝的庫和頭。要在運行kivy應用程序時使用相同的庫,必須在path環境變量的開頭添加此路徑。
 

2.2 配置文件的環境變量

KIVY_USE_DEFAULTCONFIG:如果在環境中找到這個名稱,Kivy將不會讀取用戶配置文件。
KIVY_NO_CONFIG:如果設置,則不會讀取或寫入任何配置文件。這也適用於用戶配置目錄。
KIVY_NO_FILELOG:如果設置,日志將不會打印到文件中。
KIVY_NO_CONSOLELOG:如果設置,日志將不會打印到控制台
KIVY_NO_ARGS:如果設置為其中一個(“true”、“1”、“yes”),則在命令行中傳遞的參數將不會被Kivy解析和使用。例如,您可以安全地使用您自己的參數創建一個腳本或應用程序,而不需要-分隔符:
 
例:
import os os.environ["KIVY_NO_ARGS"] ='1' import kivy
 
 
KCFG_section_key:映射到配置對象。它們在導入kivy時只加載一次。可以使用KIVY_NO_ENV_CONFIG禁用該行為。(1.11.0版本及之后的新版本)
例:
import os os.environ["KCFG_KIVY_LOG_LEVEL"] = "warning" import kivy # during import it will map it to: # Config.set("kivy", "log_level", "warning")
 
KIVY_NO_ENV_CONFIG:如果設置,則任何環境鍵將不會映射到配置對象。如果未設置,任何KCFG_section_key=值 都將被映射到配置
 

2.3 kivy核心限制環境控制具體實現

kivy.core 嘗試為您的平台選擇最佳的實現。對於測試或自定義安裝,您可能希望將選擇器限制在特定的實現中。
 
KIVY_WINDOW:用於創建窗口的實現
   默認值: sdl2, pygame, x11, egl_rpi
KIVY_TEXT:要用於渲染文本的實現
   默認值:sdl2, pil, pygame, sdlttf
KIVY_VIDEO:用於渲染視頻的實現
   默認值:gstplayer, ffpyplayer, ffmpeg, null
KIVY_AUDIO:用於播放音頻的實現
   默認值:sdl2, gstplayer, ffpyplayer, pygame, avplayer
KIVY_IMAGE:用於讀取圖像的實現
   默認值:sdl2, pil, pygame, imageio, tex, dds, gif
KIVY_CAMERA:用於讀取照相機的實現
   默認值: avfoundation, android, opencv
KIVY_SPELLING:要用於拼寫的實現
   默認值:enchant, osxappkit
KIVY_CLIPBOARD:用於剪貼板管理
   默認值:sdl2, pygame, dummy, android
 

2.4 Metrics設置(指標設置)

KIVY_DPI:如果設置,該值將用於Metrics.dpi。
   體現在 1.4.0.及以后的版本中
KIVY_METRICS_DENSITY:如果設置,該值將用於Metrics.density。
   體現在1.5.0.及以后的版本中
KIVY_METRICS_FONTSCALE:如果設置,該值將用於Metrics.fontscale。
   體現在1.5.0.及以后的版本中
 

2.5Graphics設置(圖形設置)

KIVY_GL_BACKEND: 要使用的OpenGL后端。
KIVY_GL_DEBUG: 是否記錄OpenGL調用。
KIVY_GRAPHICS  是否使用OpenGLES2。
KIVY_GLES_LIMITS 是否強制執行GLES2限制(默認值,或如果設置為1)。如果設置為false,Kivy將不會真正兼容GLES2。
以下是當設置為true時可能導致的潛在不兼容性的列表。
 
Mesh
in
dices
如果為真,則網格中的索引數被限制為65535
 
Tex
ture
blit
當對紋理進行點選時,數據(顏色和緩沖區)格式必須與創建紋理時使用的格式相同。在桌面上,不同顏色的轉換由驅動程序正確處理,而在Android上,大多數設備都無法做到這一點。參考文獻:https://github.com/kivy/kivy/issues/1600
   體現在1.8.1.及以后的版本中
 
KIVY_BCM_DISPMANX_ID: 將默認的Raspberry Pi顯示更改為使用。可用值列表可在vc_dispmanx_types.h中訪問。默認值為0:
• 0: DISPMANX_ID_MAIN_LCD
• 1: DISPMANX_ID_AUX_LCD
• 2: DISPMANX_ID_HDMI
• 3: DISPMANX_ID_SDTV
• 4: DISPMANX_ID_FORCE_LCD
• 5: DISPMANX_ID_FORCE_TV
• 6: DISPMANX_ID_FORCE_OTHER
 
KIVY_BCM_DISPMANX_LAYER: 更改默認的Raspberry Pi dispmanx圖層。默認值為: 0
   New in version 1.10.1.
 

2.6 Event Loop (事件循環設置)

 
KIVY_EVENTLOOP 當應用程序以異步方式運行時,應使用哪個異步庫。參見kivy.app了解用法示例。
 'asyncio': 當應用程序以異步的方式運行時,應該使用標准的庫異步軟件包。默認設置,如果沒有設置。
  'trio': 當應用程序以異步方式運行時,應使用trio軟件包。
  New in version 2.0.0.
 

三 、Kivy配置

 
kivy的配置文件名為config.ini,並遵循標准ini格式。

3.1 配置文件本地位置

配置文件的位置由環境變量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
在Android上,默認為:
<ANDROID_APP_PATH>/.kivy/config.ini

 

如果您的應用程序名為“org.kivy.launcher”,則該文件將在這里:
/data/data/org.kivy.launcher/files/.kivy/config.ini

 

在iOS上,默認設置為:
<HOME_DIRECTORY>/Documents/.kivy/config.ini

 

3.2 本地配置

有時,只需要更改某些應用程序的配置,或者在測試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>
或在每次運行應用程序之前,在控制台中手動更改:
1. Windows:
set KIVY_HOME=<folder>
2. Linux & OSX:
export KIVY_HOME=<folder>
更改KIVY_HOME后,文件夾的行為將與上面提到的默認.KIVY/文件夾完全相同。
 
注:去了解每個配置項,在kivy.config模塊中解釋了所有的配置項。



 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM