2014-11-22 71 views
0

嵌套滾動視圖內的一些小工具給了我這個錯誤Kivy模板視圖限制

Exception Exception: Exception('Cannot push more than 8 level of stencil. (stack overflow)',) in 'kivy.graphics.stencil_instructions.StencilPush.apply' ignored 

我知道,超過8如果8模板知曉對象不能堆放;但我想知道這實際上意味着什麼:在此之前,我在佈局中堆疊了超過8個交互式對象,但這次不起作用。

我的代碼很長,所以我不能在這裏寫它,它是一個複雜的嵌套不同類型的小部件,它們管理着不同的交互。我想知道模板視圖的這種侷限性是否會限制kivy的使用,或者這可能是由我做出的一種糟糕的管理。

[編輯]

下面是使用滾動視圖

class Edit_area(ScrollView): 

    def __init__(self,**kw): 
     super(Edit_area, self).__init__(**kw) 
     self.scroll_area_wrapper = Widget() 
     self.layout = BoxLayout(orientation = 'horizontal') 
     self.graph = Graph(xlabel='Time', ylabel='Posizione', 
     x_ticks_major=100, y_ticks_major=2, 
     y_grid_label=True, x_grid_label=True, padding=0, 
     x_grid=True, y_grid=True, xmin=0, xmax=1000, ymin=0, ymax=10, draw_border = True) 

     self.layout.add_widget(self.graph) 
     self.scroll_area_wrapper.add_widget(self.layout) 
     self.line = Editable_line() 
     self.scroll_area_wrapper.add_widget(self.line) 

     self.add_widget(self.scroll_area_wrapper) 

由於滾動視圖僅接受一個微件的微件的佈局中,我使用的包裝添加所有的元件。 此外,元素'線'有更多的其他部件,如'點'和'樣條點'。圖是kivy-garden圖包的類

+0

你能發佈你的widget佈局? – inclement 2014-11-22 14:15:09

+0

我已經發布了實現滾動視圖的類的聲明。 – UncleSax 2014-11-22 15:02:15

回答

0

發現問題。 我寫了一些錯誤的代碼,試圖在對方內部實例化更多的模板視圖。

我知道模板視圖的限制純粹與scrollview(和stencilView類本身當然)有關,因爲它是唯一繼承這個類的。

所以你不能在對方內部實例化超過8個滾動視圖,這看起來非常好。

class stencilTest(App): 
    def build(self): 
     super(stencilTest, self).__init__() 
     root = GridLayout(cols=1, spacing=10, size_hint_y=None) 
     r = root 
     for i in range(10): 
      w = ScrollView(size_hint=(1, 1), size=(1000, 800)) 
      r.add_widget(w) 
      r = r.children[0]  
     return root 


if __name__ == "__main__": 
    stencilTest().run() 

此代碼將重現錯誤,如果有興趣的