无法在PythonWin中多次运行Turtle图形脚本

时间:2019-03-22 23:45:41

标签: python python-3.x turtle-graphics pywin32

使用PythonWin学习Python和编码的简单Turtle图形脚本。该脚本只能从PythonWin执行一次。在随后的尝试中,脚本挂在创建乌龟类实例x = turtle.Turtle()的行上。我需要重新启动PythonWin才能运行脚本。 但是,同一脚本可以从IDLE中多次执行。

使用Python 3.7.2(64位)和PythonWin 3.7(64位)

这是代码

import turtle
wn = turtle.Screen()
wn.bgcolor("lightgreen")
tess = turtle.Turtle() --->hangs here
dist = 5
tess.up()                     # this is new
for pas in range(30):    # start with size = 5 and grow by 2
    tess.stamp()                # leave an impression on the canvas
    tess.forward(dist)          # move tess along
    tess.right(24)              # and turn her
    dist = dist + 2
wn.exitonclick()

在调试器中运行脚本并得到这些错误

>>> Unhandled exception while debugging...
Traceback (most recent call last):
  File "C:\Users\Drew\AppData\Local\Programs\Python\Python37\lib\turtle.py", line 2557, in __init__
    self._update()
  File "C:\Users\Drew\AppData\Local\Programs\Python\Python37\lib\turtle.py", line 2660, in _update
    self._update_data()
  File "C:\Users\Drew\AppData\Local\Programs\Python\Python37\lib\turtle.py", line 2646, in _update_data
    self.screen._incrementudc()
  File "C:\Users\Drew\AppData\Local\Programs\Python\Python37\lib\turtle.py", line 1292, in _incrementudc
    raise Terminator
turtle.Terminator

1 个答案:

答案 0 :(得分:0)

一些建议:完全删除此行:

wn.exitonclick()

或,如果这不能使情况变得更好,请替换为:

wn.mainloop()

通常,在正在运行的Python映像中,turtle是 not 可重入的。重新启动后失败,并显示Terminator。乌龟退出后,就完成了。但是某些交互式环境知道这一点,因此它们专门处理mainloop()调用。或不。您的环境可能未设置为处理exitonclick,这是一个mainloop()的调用,并结合了一个调用turtle.bye()的事件处理程序。