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图包的类
答
发现问题。 我写了一些错误的代码,试图在对方内部实例化更多的模板视图。
我知道模板视图的限制纯粹与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()
此代码将重现错误,如果有兴趣的
你能发布你的widget布局? – inclement 2014-11-22 14:15:09
我已经发布了实现滚动视图的类的声明。 – UncleSax 2014-11-22 15:02:15