异步数据加载器

这是异步加载器。您可以使用它来加载图像并使用,即使数据尚未可用。使用加载器时,您必须指定一个默认的加载图像::

from kivy.loader import Loader
image = Loader.image('mysprite.png')

你也可以从URL加载图像::

image = Loader.image('http://mysite.com/test.png')

如果你想更改默认的加载图片,可以这样做:

Loader.loading_image = Image('another_loading.png')

调整异步加载器

在 1.6.0 版本加入.

你可以根据将要加载的图片类型,调整加载器以提供更好的用户体验或更高的性能。请查看以下参数:

  • Loader.num_workers - 定义用于加载图像的线程启动数量。

  • Loader.max_upload_per_frame - 定义每帧在GPU中执行的最大图像上传次数。

class kivy.loader.LoaderBase[源代码]

基类:object

Loader 和具体实现的公共基类。默认情况下,Loader 将是最佳可用的加载器实现。

_update() 函数每 1/25 秒调用一次,或者如果帧率低于 25 FPS,则每帧调用一次。

property error_image

用于错误的图像。您可以通过以下方式更改它:

Loader.error_image = 'error.png'

在 1.6.0 版本发生变更: 不再是只读的了。

image(filename, load_callback=None, post_callback=None, **kwargs)[源代码]

使用Loader加载图像。返回一个带有加载图像的ProxyImage。您可以按如下方式使用它:

from kivy.app import App
from kivy.uix.image import Image
from kivy.loader import Loader

class TestApp(App):
    def _image_loaded(self, proxyImage):
        if proxyImage.image.texture:
            self.image.texture = proxyImage.image.texture

    def build(self):
        proxyImage = Loader.image("myPic.jpg")
        proxyImage.bind(on_load=self._image_loaded)
        self.image = Image()
        return self.image

TestApp().run()

要取消所有后台加载,请调用 Loader.stop()

property loading_image

用于加载的图像。您可以通过以下方式更改它:

Loader.loading_image = 'loading.png'

在 1.6.0 版本发生变更: 不再是只读的了。

property max_upload_per_frame

每帧上传的图像数量。默认情况下,我们每帧只向GPU上传2张图像。如果你上传的是许多小图像,可以轻松地将此参数增加到10或更多。如果你加载的是多张全高清图像,上传时间可能会产生影响并阻塞应用程序。如果你希望获得流畅的体验,请使用默认值。

实际上,一张全高清RGB图像在内存中大约占用6MB,因此可能需要一些时间。如果您还启用了`mipmap=True`,那么GPU也必须实时计算这些大图像的mipmap。此时,最好将`:attr:`max_upload_per_frame``减少到1或2。如果您想消除这个问题(或大幅减少它),请查看DDS格式。

在 1.6.0 版本加入.

property num_workers

加载时使用的工人数量(仅在加载器实现支持时生效)。此设置仅在初始化时影响加载器。一旦加载器启动,该设置将不再产生影响::

from kivy.loader import Loader
Loader.num_workers = 4

默认值为2,以确保流畅的用户体验。您可以增加工作线程数量,这样所有图片将加载得更快,但加载期间用户将无法使用应用程序。在1.6.0版本之前,默认数量为20,加载大量全高清图片时会完全阻塞应用程序。

在 1.6.0 版本加入.

pause()[源代码]

暂停加载器,在交互过程中可能很有用。

在 1.6.0 版本加入.

resume()[源代码]

在调用 pause() 之后,恢复加载器。

在 1.6.0 版本加入.

run(*largs)[源代码]

加载器的主循环。

start()[源代码]

启动加载器线程/进程。

stop()[源代码]

停止加载器线程/进程。

class kivy.loader.ProxyImage(arg, **kwargs)[源代码]

基类:Image

Loader.image() 函数返回的图像。

属性:
loaded:布尔值,默认为 False

如果图像已被缓存,此值可能为 True。

事件:
on_load

当图像加载或更改时触发。

on_error

当图片无法加载时触发。error:发生的异常数据