Черепашья графика не отвечает

Я создаю диаграммы с пакетом turtle в Python, и он в некоторой степени успешен, за исключением одной проблемы. Как только черепаха генерирует диаграмму, которую я имею в коде, она заставляет программу сказать "Не отвечает", и в конце концов я должен закончить задачу. Я использую Windows 7.

Кто-нибудь из вас испытывал это или знает коренную причину? Я попытался переустановить Python полностью, но это, похоже, не повлияло на проблему.

Вот пример кода, который не даст ответа:

import turtle
from turtle import forward, right, left

forward(50)

Ответ 1

У меня была такая же проблема (я тоже был на Win 7, а потом на Win XP у меня возникла такая же проблема), и я просто понял это.

Вы должны сказать turtle.done() когда закончите.

Теперь, когда я это знаю, это имеет больше смысла, потому что, поскольку Python не знает, что черепаха готова, он, вероятно, ждет еще одной команды для черепахи.

Вот документация (в Python 2.7), какую библиотеку я предполагаю вы используете. Это, как я понял это. Там написано Python 2.7, но это также работает для Python 2.5.
http://docs.python.org/library/turtle.html

Надеюсь, что это поможет (для вас или любого другого, кто читает это),
Alex

Ответ 2

Просто добавьте вызов exitonclick в конце. Класс Turtle реализован с использованием Tkinter, а exitonclick() вызывает mainloop() который будет держать окно turtle открытым, пока вы не нажмете где-нибудь на холсте. Итак, простая программа выглядит так:

from turtle import *
#make a square
for _ in range(4):
   forward(100)
   left(90)
exitonclick()

Наслаждайтесь!

Ответ 3

Добавьте mainloop() или exitonclick() или done() или что-то, показывающее python, что вы хотите выйти из окна черепахи

Ответ 4

Я использую Python 3.6.0 и столкнулся с той же проблемой. turtle.done() после вашего блока кода не позволяет графическому окну черепахи перестать отвечать на запросы.

import turtle 

for _ in range(5):
    turtle.forward(100)
    turtle.right(360/5)

turtle.done() # <------------

Ответ 5

У него есть проблемы с IDLE. Это будет работать, если запустить из командной строки Python

Ответ 6

добавьте следующую строку в конце вашего кода:

wait_for_user()

Это должно решить вашу проблему!

Ответ 7

Я когда-либо сталкивался с вашей проблемой, и затем я пытаюсь создать ярлык для IDLE следующим образом (не забудьте "-n"):

target:D:\Python27\Lib\idlelib\idle.pyw -n

И запустите IDLE с помощью ярлыка, введите код yr и наслаждайтесь!

Ответ 8

Я попробовал код в моем IDLE, и он работал отлично. У вас есть старая или более медленная машина? Хотя я не думаю, что проблема. Попробуйте добавить строку в конце:

exitonclick()

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

-Harry

Ответ 9

Как это исправить в Python 3.4.3:

>>> help(turtle.bye)
Help on function bye in module turtle:

bye()
    Shut the turtlegraphics window.

    Example:
    >>> bye()