3

當我運行一個龜圖形單元並繪製一些東西它沒事,但是如果我關閉窗口並再次運行該單元,我會遇到一個叫做終結者的奇怪錯誤,重新啓動內核以便能夠再次運行該單元。如果我試圖連續運行2個不同的烏龜圖形單元(2個單元繪製不同的東西並編碼良好),這也發生在我身上。如果我運行其中一個,那麼我重新啓動內核,然後運行另一個,沒有發生錯誤,但不得不重新啓動內核並不好,讓我很不高興。這隻發生在我用我的新的MacBook, 與我的PC Windows一切都很好,我可以連續運行和重複烏龜圖形單元,唯一的想法,我需要做的就是關閉當前的烏龜窗口運行其他。運行Python 3龜時出現奇怪的終結者錯誤龜OS X

import turtle 
window = turtle.Screen() 
t = turtle.Turtle() 

t.forward(50) 
turtle.mainloop() 

如果我運行這段代碼一次是alright.But如果我關閉龜窗口,並沒有重新啓動之前內核再次運行它,我得到這個錯誤:

-------------------------------------------------------------------------- 
Terminator        Traceback (most recent call last) 
<ipython-input-2-48bfc10d8dfd> in <module>() 
     2 
     3 window = turtle.Screen() 
----> 4 t = turtle.Turtle() 
     5 
     6 t.forward(50) 

/Users/marti/anaconda/lib/python3.5/turtle.py in __init__(self, shape, undobuffersize, visible) 
    3814       shape=shape, 
    3815       undobuffersize=undobuffersize, 
-> 3816       visible=visible) 
    3817 
    3818 Pen = Turtle 

/Users/marti/anaconda/lib/python3.5/turtle.py in __init__(self, canvas,  shape, undobuffersize, visible) 
    2555   self._undobuffersize = undobuffersize 
    2556   self.undobuffer = Tbuffer(undobuffersize) 
-> 2557   self._update() 
    2558 
    2559  def reset(self): 

/Users/marti/anaconda/lib/python3.5/turtle.py in _update(self) 
    2658    return 
    2659   elif screen._tracing == 1: 
-> 2660    self._update_data() 
    2661    self._drawturtle() 
    2662    screen._update()     #  TurtleScreenBase 

/Users/marti/anaconda/lib/python3.5/turtle.py in _update_data(self) 
    2644 
    2645  def _update_data(self): 
-> 2646   self.screen._incrementudc() 
    2647   if self.screen._updatecounter != 0: 
    2648    return 

/Users/marti/anaconda/lib/python3.5/turtle.py in _incrementudc(self) 
    1290   if not TurtleScreen._RUNNING: 
    1291    TurtleScreen._RUNNING = True 
-> 1292    raise Terminator 
    1293   if self._tracing > 0: 
    1294    self._updatecounter += 1 

Terminator: 

我不知道爲什麼我得到這個錯誤,並在互聯網上發現了關於它的糟糕信息。同樣的錯誤發生在我擁有不同的龜細胞並在另一個之前運行。我發現的唯一的事情是在finder.Thats的幫助()命令引爆烏龜是我在這裏找到關於終止:

CLASSES 
    builtins.Exception(builtins.BaseException) 
     Terminator 

class Terminator(builtins.Exception) 
    | Will be raised in TurtleScreen.update, if _RUNNING becomes False. 
    | 
    | This stops execution of a turtle graphics script. 
    | Main purpose: use in the Demo-Viewer turtle.Demo.py. 
    | 
    | Method resolution order: 
    |  Terminator 
    |  builtins.Exception 
    |  builtins.BaseException 
    |  builtins.object 
    | 
    | Data descriptors defined here: 
    | 
    | __weakref__ 
    |  list of weak references to the object (if defined) 
    | 

我在編程位新手,這個錯誤也影響了我很多我真的希望有人能幫助我。也許可以幫助解決這個問題,當我運行一隻烏龜,然後以正確的方式關閉窗口,比如使用mainloop(),烏龜圖形窗口似乎被關閉,但實際上我一直在碼頭上看到它吧,就像它被最小化或者它已經在運行一樣,然後當我運行另一個烏龜圖形窗口時,也許舊的一個以某種奇怪的方式保持打開的事實影響了新的,並且我得到這個終結者錯誤。

+0

我有IPython中,蟒蛇,或OSX沒有經驗,我不明白你* *的「龜細胞」或「重啓籽粒」的意思。如果你在命令行運行'python myturtle.py',關閉窗口並重新運行,應該沒問題。試試這個來確定。在https://hg.python.org/cpython/rev/1ae2382417dc/中,我修補了龜文件以捕獲由於外部演示程序阻止了龜程序的特殊情況而產生的終結者。可能是OSX上的Anaconda未正確設置運行海龜程序。嘗試從IDLE運行。 –

+0

謝謝你的回答特里。對於烏龜細胞,我指的是ipython筆記本中的一個代碼單元,我在其中編寫使烏龜或多個烏龜畫圖的東西的圖形代碼。對於內核,我的意思是讓ipython筆記本工作的東西,這是程序的核心或其他東西。我試圖運行'python myturtle.py',但它說沒有這樣的文件或目錄。 – Borrell

+0

python.org網站的東西我不知道如何管理它,似乎在IDLE龜的作品中,但我的目標是在ipython筆記本上運行它,因爲它更容易讓我操縱它並學習它。也許你是對的,OS X上的anaconda沒有正確設置來運行海龜程序......或者我可能會遇到anaconda missinstaled或奇怪的事情。不管怎樣,謝謝你! – Borrell

回答

1

可能是這些小嘎嘎的代碼會做的。 模塊導入代碼後。調用這些行turtle.clear() 用龜繪製完成後,轉到下一個單元並運行turtle.bye()

這是一個快速修復。

最好是在turtle窗口/畫布上調用exitonclick()方法在龜完成繪製之後。 e.g

turtle_window = turtle.Screen() 
........Draw something 
turtle_window.exitonclick()