来自按钮的Kivy Carousel

时间:2014-05-19 15:20:09

标签: events carousel kivy

此代码中缺少运行carousel的内容??

我试图用按钮连接旋转木马。当我跑,它显示一个按钮,但on_press没有任何反应。   此代码中缺少运行carousel的内容??

Builder.load_string('''
<tela>:

    Button:
        text: 'ir'
        font_size: 32
        size_hint: None, None
        pos_hint: {'right': 1}
        size: 150, 50
        on_press: root.ida()

''')

class acesso(BoxLayout):
    def ida(self):
        self.clear_widgets()
        self.add_widget(tela1())

class tela(BoxLayout):
    def ida(self):
            self.parent.ida()

class tela1(App,Widget):
    def livro(self):
        carousel = Carousel(direction='right',loop='true')
        for i in range(1,5):
            src = "images/%d.png" % i
            image = Image(source=src,pos=(1,10), size=(1250, 635))
            carousel.add_widget(image)
        return carousel


class CarroselApp(App):
    def build(self):
        self.acesso = acesso()
        self.acesso.add_widget(tela())
        return self.acesso

if __name__ == "__main__":

    CarroselApp().run()

1 个答案:

答案 0 :(得分:1)

您的代码存在多重问题:

  1. 您从AppWidget继承tela1。我不知道它的影响,但这在某种程度上是错误的。 Thoses并不意味着要结合起来。您的CarroselApp已经在这里。

  2. 您的tela1小部件有一个livro()方法,但从未被调用过。另外,您创建了一个小部件Carousel,但没有真正将其添加到tela1

  3. tela来自Widget的继承,所以它不会布置孩子们。我是200%,这首先不会给你所希望的。

  4. 我想如果你用这段代码替换tela1,它可能有效:

    class tela1(FloatLayout):
        def __init__(self, **kwargs):
            super(tela1, self).__init__(**kwargs)
            self.add_widget(self.livro())
    
        def livro(self):
            carousel = Carousel(direction='right',loop='true')
            for i in range(1,5):
                src = "images/%d.png" % i
                image = Image(source=src,pos=(1,10), size=(1250, 635))
                carousel.add_widget(image)
            return carousel
    

    注意:请考虑使用pep8代码。使用小写作为类名并不常见且令人困惑。