2014-05-19 131 views
0

此代碼中缺少運行傳送帶?

我正嘗試將旋轉木馬按鈕放入旋鈕中。當我跑步時,它顯示一個按鈕,但on_press沒有任何反應。 此代碼中運行傳送帶時缺少什麼?Kivy旋轉木馬從一個按鈕

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

請輸入完整的代碼。它更容易複製。 – svineet

回答

1

有數倍的問題與您的代碼:

  1. 您從App inherith和Widgettela1。我不知道這樣做的效果,但這是錯誤的。這些並不意味着結合在一起。您的CarroselApp已經在這裏。

  2. 您的tela1小部件有一個livro()方法,但從未調用過。另外,你創建一個小部件Carousel而不真的把它添加到tela1

  3. 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爲您的代碼。爲類名使用小寫字母並不常見,並且令人困惑。