2014-11-05 91 views
1

我已經創建了兩個可以調整大小的Scatter小部件,我正在尋找的是每次按下按鈕時產生更多Scatter小部件(可能高達20-ish)的方法。我試圖編寫並將addfunction()綁定到Button,但似乎不起作用。kivy - 綁定按鈕來產生額外的部件實例?

我正在尋找一種方法來產生一個Scatterer小部件的新實例(以及子小部件Drawer,它有一個canvas以顯示它佔用的空間)。

這裏是我的Python代碼:

​​

和我.kv文件:

#:kivy 1.0.9 

<MainWindowWidget> 

    Scatterer: 
     id: scatter2 
     size: 80, 80 
     Drawer: 
      size: scatter2.size 
    Scatterer: 
     id: scatter1 
     size: 80, 80 
     Drawer: 
      size: scatter1.size 
    Button: 
     text: 'press' 
     size_hint: None, None 
     size: 100, 100 
     pos: 100, 0 

     on_release: root.addfunction() 
<Scatterer>: 
    do_rotation: False 
    size_hint: None, None 
    size: self.size 

    canvas.after: 
     Color: 
      rgba: 1, 1, 0, 0.5 
     Rectangle: 
      size: self.size 
      pos: self.pos 

<Drawer>: 
    size: self.size 
    canvas: 
     Color: 
      rgba: 0, 1, 0, 0.3 
     Rectangle: 
      pos: self.pos 
      size: self.size 

回答

2

根= MainWindowWidget()

你的問題是,你寫這篇文章,然後添加新的散點到root,但是不要對根做任何事情,所以它永遠不會ge ts顯示。

你不想散射添加到 MainWindowWidget,但到目前一個其方法是運行做出新的散射體。因此,與

def addfunction(self, *args): 


    s = Scatterer() 
    d = Drawer() 

    self.add_widget(s) 
    s.add_widget(d) 
    print("button is pressed") 
+0

感謝您的替換方法的聲明,這個工作,但是'd.size'是'1,1'所以我不得不添加's.size = 80,80'和'd.size = s.size'來得到我想要的 – ivandaho 2014-11-06 02:24:17

相關問題