Черепашья графика не отвечает
Я создаю диаграммы с пакетом 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()
Ответ 10
при использовании turtle.done() первый раз сработает, а второй нет.
чтобы решить это:
turtle.done()
try:
turtle.bye()
except turtle.Terminator:
pass
отсюда Проблемы с запуском черепашьих программ в Spyder