【问题标题】:A recursion error I can't figure out我无法弄清楚的递归错误
【发布时间】:2015-10-19 22:06:05
【问题描述】:

我正在尝试使散点平面布局按照我想要的方式运行,但是当我尝试缩小某个点时,我收到错误“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])

【问题讨论】:

  • 将堆栈跟踪(重复的部分)也放入可能很有用
  • 欢迎来到 StackOverflow。请阅读并遵守发布指南,尤其是MCVE。给我们示例输入和输出(无论是期望的还是您在编码尝试中得到的)。既然您知道问题出在哪里,如果您告诉我们会有所帮助。
  • 糟糕,我以为我已经把它放进去了,现在好了,问题是当我尝试缩小到某个点时它崩溃了,代码中也标记了错误

标签: python recursion kivy


【解决方案1】:

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

您可能想检查一下。

【讨论】:

  • 哦,我是个白痴,谢谢你,我已经在那个沟里呆了几个星期了,查看我自己的代码,我显然之前解决了这个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 2015-10-26
相关资源
最近更新 更多