Kivy - 資料載入器



Kivy 框架中的 Loader 類是一個非同步資料載入器,即使資料尚不可用,它也能載入影像。當您想要從網際網路 URL 載入影像時,此功能特別有用。

Loader 類在 kivy.loader 模組中定義。Loader 類的典型用法如下:

from kivy.loader import Loader
image = Loader.image('http://mysite.com/test.png')

使用 loading_image 屬性指定預設影像。

Loader.loading_image = Image(default.png')

Loader 類具有以下屬性:

  • error_image - 用於錯誤的影像。例如:

Loader.error_image = 'error.png'
  • image(filename) - 使用 Loader 載入影像。返回一個帶有載入影像的 ProxyImage。

  • loading_image - 用於載入的影像。例如:

Loader.loading_image = 'loading.png'
  • max_upload_per_frame - 每幀上傳的影像數量。預設情況下,我們每幀只上傳 2 張影像到 GPU。

  • num_workers - 載入時使用的 worker 數量。此設定僅在初始化時影響載入器。載入器啟動後,此設定無效。

from kivy.loader import Loader
Loader.num_workers = 4

預設值為“2”,以提供流暢的使用者體驗。

  • ProxyImage() - Loader.image() 函式返回的影像。

proxyImage = Loader.image("test.jpg")
  • pause() - 暫停載入器。

  • resume() - 在 pause() 後恢復載入器。

  • run() - 載入器的主迴圈。

  • start() - 啟動載入器執行緒/程序。

  • stop() - 停止載入器執行緒/程序。

當影像載入或更改時,將觸發“on_load”事件。類似地,當影像無法載入時,將觸發“on_error”事件。“error: 發生的異常資料”。

示例

在下面的程式碼中,Loader 物件從網際網路 URL 載入影像。Loader 返回的 ProxyImage 物件繫結到其 on_load 事件上的方法。回撥方法使用其紋理作為 Image 物件的紋理屬性。

from kivy.app import App
from kivy.uix.image import Image
from kivy.loader import Loader
from kivy.core.window import Window

Window.size = (720,400)

class MyApp(App):

   title='Loader'
   
   def _image_loaded(self, proxyImage):
   if proxyImage.image.texture:
      self.image.texture = proxyImage.image.texture
   def build(self):
      proxyImage = Loader.image('https://source.unsplash.com/user/c_v_r/640x480')
      proxyImage.bind(on_load=self._image_loaded)
      self.image = Image()
      return self.image
MyApp().run()

輸出

執行後,將產生以下輸出:

Kivy Data Loader
廣告