在滚动视图中嵌套一些小部件给了我这个错误。
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’和‘样条点’。图是奇维-花园图包的一类。
发布于 2014-11-25 11:29:57
发现问题了。我写了一些错误的代码,试图在彼此内部实例化更多的模具视图。
我知道模具视图的限制完全与滚动视图(当然还有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()如果有兴趣,此代码将再现错误。
https://stackoverflow.com/questions/27077002
复制相似问题