我是kivy的新手,但我对Python和Tkinter有着不错的经验。我试图以编程方式控制kivy中的旋转木马。基本上,我有一个外部python程序,我想用它来自动切换旋转木马中的图像。举个例子,我在另一个文件中有一些代码:
import time
while True:
time.sleep(1)
#do something to control the carousel
然后我有了我的kivy app:
import kivy
from kivy.app import App
from kivy.uix.carousel import Carousel
from kivy.uix.image import AsyncImage
class CarouselApp(App):
self.srcs = ["/a/bunch.png", "/of/paths.jpg", "/to/images.png."]
def build(self):
self.carousel = Carousel(direction="right")
for i in range(0, len(self.srcs)):
src = self.srcs[i]
image = AsyncImage(source=src, allow_stretch=True)
self.carousel.add_widget(image)
return self.carousel
if __name__ == "__main__":
CarouselApp().run()
我希望能够使用顶部代码控制旋转木马中显示的幻灯片,但我不确定如何执行此操作,因为我无法在App.run()
之后执行任何操作
我已经调查了kivy的Clock
模块,但是我不确定这对我有用,因为我想在满足某些条件时而不是按时间切换幻灯片。我给出的时间示例只是我思路的一个例子。
非常感谢任何帮助!
答案 0 :(得分:0)
我强烈建议使用Kivy文件来处理这种情况。其次,当您想要使用将从Internet下载的图像时使用AsyncImage
,并且我可以看到您将要使用的图像是本地存储的,因此请使用Image
代替
我认为你应该在扩展on_start
(本例中为App
)的类中实现方法CarouselApp
,并使用Clock
来安排函数,
def on_start(self):
Clock.schedule_interval(self.my_callback, 1)
然后在同一个班级(CarouselApp
)中,您应该定义my_callback
:
def my_callback(self, nap):
if condition_is_satisfied: # this is supposed to be your condition
# control carousel