一个递归错误,我无法弄清楚

时间:2015-10-19 22:06:06

标签: python recursion kivy

我正在尝试使散射平面布局表现我想要它但是当我尝试缩小超过某一点时我得到错误“RuntimeError:调用Python对象时超出了最大递归深度”我不能找出递归发生的原因,通过反复试验我发现它发生的地方(在代码中标出)

这里是追溯:http://pastebin.com/i2z8SXgc

class Controller(ScatterPlaneLayout):
    def __init__(self, **kwargs):
            super(Controller, self).__init__(**kwargs)

    def on_transform(self, instance, value):
        win = self.get_parent_window().size
        this = self.bbox[1]

        if win[0] > this[0] and win[1] > this[1]:
            if self.x < 0:
            self.x = 0
            if self.y < 0:
                self.y = 0
            if this[0] + self.x > win[0]:
                self.set_right(win[0])
            if this[1] + self.y > win[1]:
                self.set_top(win[1])

        else:
            if self.x > 0:
                self.x = 0
            if self.y > 0:
                self.y = 0
               #This is the part that causes the error
            if this[0] + self.x < win[0]:
                self.x = win[0] - this[0]
               #end of error
            if this[1] + self.y < win[1]:
                self.set_top(win[1])

1 个答案:

答案 0 :(得分:0)

导致错误的原因是代码self.x = win[0] - this[0]调用on_transform函数,传递第一个if并且一次又一次地调用它自己。

可能想检查一下。