Черепаха Графика не отвечает - PullRequest
12 голосов
/ 28 августа 2011

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

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

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

import turtle
from turtle import forward, right, left

forward(50)

Ответы [ 10 ]

17 голосов
/ 30 мая 2012

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

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

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

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

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

9 голосов
/ 30 марта 2012

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

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

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

2 голосов
/ 26 февраля 2017

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

import turtle 

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

turtle.done() # <------------
2 голосов
/ 24 декабря 2013

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

1 голос
/ 11 сентября 2014

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

wait_for_user()

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

1 голос
/ 25 февраля 2012

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

0 голосов
/ 14 мая 2019

при использовании turtle.done () первый раз будет работать, но второй раз нет.

, чтобы решить эту проблему:

turtle.done()
try:
    turtle.bye()   
except turtle.Terminator:
    pass

отсюда Проблемы с запускомпрограммы черепахи в Spyder

0 голосов
/ 22 сентября 2015

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

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

bye()
    Shut the turtlegraphics window.

    Example:
    >>> bye()
0 голосов
/ 20 января 2014

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

exitonclick()

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

-Harry

0 голосов
/ 08 мая 2013

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

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

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

...