2015-10-19 58 views
-1

我想使散點平面佈局行爲如何我希望它,但是當我嘗試縮小超過某個點時,我得到錯誤「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]) 
+0

將堆棧跟蹤(重複的部分)放入 – AlbertFerras

+0

歡迎使用StackOverflow。請閱讀並遵循發佈指南,尤其是[MCVE](http://stackoverflow.com/help/mcve)。爲我們提供樣本輸入和輸出(包括期望和您在編碼嘗試中獲得的內容)。既然你知道問題出在哪裏,如果你告訴我們,這會有所幫助。 – Prune

+0

哎呀我以爲我已經把它放在了,現在是這樣,問題是,當我試圖縮小超過某個點時它崩潰也錯誤標記在代碼 –

回答

0

看起來會導致錯誤的是代碼self.x = win[0] - this[0]調用函數on_transform,傳遞第一個if和ca一遍又一遍地把自己安頓下來。

可能想檢查一下。

+0

哦,我是一個白癡,謝謝你我幾個星期來,我一直在這個溝裏,看着我自己的代碼,我明顯地解決了這個問題 –