2016-11-26 3 views
0

Я написал скрипт python для рисования круга квадратов.Закрытие черепахи Графика GUI во время работы

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() 

Я хочу, чтобы иметь возможность закрыть графический интерфейс черепаха, пока он все еще находится в процессе рисования, то есть, когда цикл в то время как работает. Если я нажимаю на кнопку, GUI говорит «Не реагировать». Пожалуйста помоги.

ответ

0

Хотя я не могу воспроизвести вашу проблему в своей системе, у меня есть предложение, которое может решить вашу проблему. Как и в настоящее время, ваша программа полностью запускается до того, как вы переверните управление в основной цикл, т. Е. Когда-либо вырисовывается, прежде чем вы вызовете turtle.done(), когда черепаха начинает прослушивать такие события, как закрытие окна.

Возьмем другого подхода, при котором ваш коде рисования происходит после вы звоните turtle.done() (или turtle.exitonclick() в моем примере), поставив его на таймере событий:

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() 

Дайте нам знать, если это решит ваш немедленная проблема. Обратите внимание, что я немного изменил ваш код: некоторые вещи, чтобы он работал лучше, как событие таймера; некоторые вещи просто потому, что они закричали ...

Смежные вопросы