我试图用按钮连接旋转木马。当我跑,它显示一个按钮,但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()
答案 0 :(得分:1)
您的代码存在多重问题:
您从App
和Widget
继承tela1
。我不知道它的影响,但这在某种程度上是错误的。 Thoses并不意味着要结合起来。您的CarroselApp
已经在这里。
您的tela1
小部件有一个livro()
方法,但从未被调用过。另外,您创建了一个小部件Carousel
,但没有真正将其添加到tela1
。
tela
来自Widget
的继承,所以它不会布置孩子们。我是200%,这首先不会给你所希望的。
我想如果你用这段代码替换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代码。使用小写作为类名并不常见且令人困惑。