当相应的轮播幻灯片处于活动状态时如何加载图像?



这是一个带有旋转木马的kivy python脚本,我在网络上找到了我试图复制的旋转木马。

from kivy.app import App
from kivy.uix.carousel import Carousel
from kivy.factory import Factory
from kivy.uix.image import Image

class Example1(App):
def build(self):
carousel = Carousel(direction='right',loop='true')
for i in range(1,5):
src = "http://placehold.it/480x270.png&text=slide-%d&.png" % i
#load images asynchronously
image = Factory.AsyncImage(source=src, allow_stretch=True)          
carousel.add_widget(image)
print(i)
return carousel
if __name__ == '__main__':
Example1().run()

这将一次下载所有图像,这适用于较小尺寸和较少数量的图像。当我在其他尺寸更大的图像中尝试时。甚至需要很长时间才能将这些图像加载到kivy应用程序。

有没有办法我们可以一一加载图像?假设我们何时运行 kivy 应用程序而不是一起下载所有图像;轮播的第一张幻灯片应仅下载第一张图片,当我们向左或向右滑动时,应下载相应的幻灯片图像。

您可以创建自定义生成器函数,以便在调用时加载上一张或下一张幻灯片,然后下载或加载相应的图像。 这是我应用程序中的一个脚本,每 3 秒后自动更改屏幕,但我在我的 KV 文件中手动创建了轮播,而不是从远程源调用它们。

from kivy.uix.screenmanager import Screen
from kivy.properties import ObjectProperty
import threading
from kivy.clock import Clock
class StartScreen(Screen):
ml = ObjectProperty(None)
scroller = ObjectProperty(None)
button = ObjectProperty(None)
carousel = ObjectProperty(None)
def caller(self):
threading.Thread(target = self.call).start()
def call(self):
Clock.schedule_interval(self.changer, 3)
def changer(self,*args):
self.ids.carousel.load_next()

最新更新