【发布时间】:2014-05-20 21:30:53
【问题描述】:
我制作了一个非常简单的 Kivy 应用程序,其中有不同的布局。我需要将我的应用拆分为GridLayout(rows=2),这样我可以在屏幕顶部有一个“标题”,在屏幕的其余部分有一个carousel 或accordion。
我的问题是我不知道如何在布局中返回我的小部件。
这是我的代码:
class Logo(App):
def build(self):
layout = GridLayout(rows=2)
layoutTop = FloatLayout()
layoutMid = FloatLayout()
logo = Image(source='imagine.png',size_hint=(.25,.25),pos=(30,380))
titre = Label(text='#LeCubeMedia',font_size='40sp',pos=(0,280))
ip = Label(text='192.168.42.1',font_size='25sp',pos=(250,280))
carousel = Carousel(direction='right', loop = True, size_hint=(.5,.5),pos=(300,180))
for i in range(2):
src = "imagine.png"
image = Factory.AsyncImage(source=src, allow_stretch=True)
carousel.add_widget(image)
Clock.schedule_interval(carousel.load_next, 1)
return carousel ------> 1st Return
layoutTop.add_widget(titre)
layoutTop.add_widget(logo)
layoutTop.add_widget(ip)
layoutMid.add_widget(carousel)
layout.add_widget(layoutTop)
layout.add_widget(layoutMid)
return layout ------> 2nd Return
if __name__ == '__main__':
Logo().run()
如您所见,我需要这 2 个 return 才能在我的布局中显示我的轮播,但这样只有轮播会出现在我的应用程序中。如果我删除return carousel,它会在刷图像时失败,有点像有一个布局刷新阻止轮播正常传递图像。
有什么想法可以重新构建代码以在我的布局中拥有一个好的轮播吗?
【问题讨论】:
-
你好,你能把你的整个代码贴出来吗?在我的脑海中,到目前为止唯一的答案是正确的,你应该只返回一次。但是,如果可以,我们将尝试通过修复上述问题来解决这个问题。但是,为此,我需要整个代码,如果以上还不是全部的话。
-
@Tshirtman 推送修复后问题已解决。尝试在 GitHub 上将您的 Kivy 更新为 master。现在可以在
load_next函数上设置schedule_interval。