以编程方式控制kivy中的旋转木马
Programmatically controlling a carousel in kivy
我是 kivy 的新手,但我在 Python 和 Tkinter 方面有不错的经验。我正在尝试以编程方式控制 kivy 中的旋转木马。本质上,我有一个外部 python 程序,我想用它来自动切换轮播中的图像。举个例子,我在另一个文件中有一些代码:
import time
while True:
time.sleep(1)
#do something to control the carousel
然后我有了我的 kivy 应用程序:
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()
我希望能够使用顶部代码控制轮播中显示哪张幻灯片,但我不确定该怎么做,因为在 [=12 之后我无法执行任何操作=]
我研究了 kivy 的 Clock
模块,但我不确定这是否适合我,因为我想在满足某些条件时而不是按时间切换幻灯片。我举的时间例子只是我思路的一个例子。
如有任何帮助,我们将不胜感激!
我强烈建议使用Kivy 文件来处理这种情况。其次,当您想使用将从 Internet 下载的图像时使用 AsyncImage
,并且我可以看到您将要使用的图像存储在本地,因此请改用 Image
.
我认为你应该在扩展 App
的 class 中实现方法 on_start
(在本例中为 CarouselApp
)并使用 [=17 安排函数=]作为,
def on_start(self):
Clock.schedule_interval(self.my_callback, 1)
然后在同一个 class (CarouselApp
) 你应该定义 my_callback
:
def my_callback(self, nap):
if condition_is_satisfied: # this is supposed to be your condition
# control carousel
我是 kivy 的新手,但我在 Python 和 Tkinter 方面有不错的经验。我正在尝试以编程方式控制 kivy 中的旋转木马。本质上,我有一个外部 python 程序,我想用它来自动切换轮播中的图像。举个例子,我在另一个文件中有一些代码:
import time
while True:
time.sleep(1)
#do something to control the carousel
然后我有了我的 kivy 应用程序:
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()
我希望能够使用顶部代码控制轮播中显示哪张幻灯片,但我不确定该怎么做,因为在 [=12 之后我无法执行任何操作=]
我研究了 kivy 的 Clock
模块,但我不确定这是否适合我,因为我想在满足某些条件时而不是按时间切换幻灯片。我举的时间例子只是我思路的一个例子。
如有任何帮助,我们将不胜感激!
我强烈建议使用Kivy 文件来处理这种情况。其次,当您想使用将从 Internet 下载的图像时使用 AsyncImage
,并且我可以看到您将要使用的图像存储在本地,因此请改用 Image
.
我认为你应该在扩展 App
的 class 中实现方法 on_start
(在本例中为 CarouselApp
)并使用 [=17 安排函数=]作为,
def on_start(self):
Clock.schedule_interval(self.my_callback, 1)
然后在同一个 class (CarouselApp
) 你应该定义 my_callback
:
def my_callback(self, nap):
if condition_is_satisfied: # this is supposed to be your condition
# control carousel