Kivy模板视图限制

Kivy模板视图限制

问题描述:

嵌套滚动视图内的一些小工具给了我这个错误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

发现问题。 我写了一些错误的代码,试图在对方内部实例化更多的模板视图。

我知道模板视图的限制纯粹与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() 

此代码将重现错误,如果有兴趣的