在滚动视图中嵌套一些小部件给了我这个错误
Exception Exception: Exception('Cannot push more than 8 level of stencil. (stack overflow)',) in 'kivy.graphics.stencil_instructions.StencilPush.apply' ignored
我知道不能堆叠超过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)
因为scrollView只接受一个小部件,所以我使用了一个包装器来添加所有元素。 此外,元素'line'在其中有更多其他小部件,如'point'和'spline points'。 Graph是kivy-garden图表包的类
答案 0 :(得分:0)
发现问题。 我写了一些错误的代码,试图在彼此内部实例化更多的模板视图。
我知道模板视图的限制纯粹与scrollview(当然还有stencilView类本身)有关,因为它是唯一一个继承此类的人。
因此,您无法在彼此内部实现超过8个scrollview,这看起来非常好。
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()
如果感兴趣,此代码将重现错误