2016-11-26 36 views
0

我写了一个python脚本来绘制一个正方形圆。在操作时关闭turtle图形用户界面

import turtle 
angle = 0 
turn_ang = 30 
while (angle <= 360): 
    turtle.forward(100) 
    turtle.right(90) 
    turtle.forward(100) 
    turtle.right(90) 
    turtle.forward(100) 
    turtle.right(90) 
    turtle.forward(100) 
    turtle.right(90) 
    turtle.right(turn_ang) 
    angle = angle + turn_ang 
turtle.done() 

我希望能够在它仍处于绘制过程中(即,while循环运行时)关闭turtle GUI。如果我点击close,GUI会显示'Not Responding'。请帮忙。

回答

0

虽然我无法在系统上重现您的问题,但我有一个建议可以解决您的问题。按照目前的设计,您的程序会在您将控制权交还给主循环之前完全运行,即在您拨打turtle.done()之前,即在乌龟开始监听窗口关闭等事件时,会画出everthing。

让我们的另一种方法,其中你(在我的例子或turtle.exitonclick())调用turtle.done()后绘制代码发生通过把它放在一个事件定时器:

import turtle 

angle = 0 
TURN_ANGLE = 30 

def square(): 
    global angle 

    for _ in range(4): 
     turtle.forward(100) 
     turtle.right(90) 

    turtle.right(TURN_ANGLE) 
    angle += TURN_ANGLE 

    if angle <= 360: 
     turtle.ontimer(square, 100) 
    else: 
     turtle.hideturtle() 

turtle.ontimer(square, 100) 

turtle.exitonclick() 

让我们知道是否能解决您的直接问题。请注意,我已经调整了一下你的代码:有些事情可以使它在定时器事件中更好地工作;有些事情只是因为他们为此而哭泣...