【问题标题】:Turtle Graphics Not Responding海龟图形没有响应
【发布时间】:2011-11-05 06:06:13
【问题描述】:

我正在用Python中的turtle包创建图表,它在某种程度上是成功的,除了一个问题。一旦海龟生成了我在代码中的图表,它就会导致程序说“没有响应”,最终我不得不结束任务。我正在使用 Windows 7。

你们中有人经历过这种情况或知道根本原因吗?我尝试完全重新安装 Python,但这似乎并没有影响问题。

这里有一些示例代码会导致它无法响应:

import turtle
from turtle import forward, right, left

forward(50)

【问题讨论】:

  • 更好的是,尝试找到导致相同问题的代码的一小部分但完整的子集。
  • 如果我执行任何命令,都会导致海龟没有响应。我在原始帖子中添加了一些代码。
  • 你的 IDLE 用完了吗?
  • 哦,我明白你的意思了,是的,我正在通过 IDLE 运行它。我单击“使用 IDLE 编辑它”,然后按 F5 运行脚本。
  • 我通过命令行运行它,它运行良好。 IDLE 有什么问题?

标签: python windows-7 turtle-graphics


【解决方案1】:

IDLE 有一些问题。如果从 python 命令行运行,它将起作用

【讨论】:

  • 完全同意...如果您想与海龟进行交互式会话,则上述响应有效。好棒的pypy。
【解决方案2】:

只需在最后添加一个对 exitonclick 的调用。 Turtle 类是使用 Tkinter 实现的,exitonclick() 调用 mainloop(),这将使海龟窗口保持打开状态,直到您单击画布中的任意位置。因此,一个简单的程序如下所示:

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

享受吧!

【讨论】:

    【解决方案3】:

    我遇到了同样的问题(我也是在 Win 7 上,然后我在 Win XP 上遇到了同样的问题),我只是想通了。

    完成后你必须说turtle.done()

    既然我知道了这一点,那就更有意义了,因为 Python 不知道海龟已经完成,它可能正在等待海龟的另一个命令。

    这是我假设您正在使用的库的文档(在 Python 2.7 中)。我就是这么想的。它说 Python 2.7,但这也适用于 Python 2.5。
    http://docs.python.org/library/turtle.html

    希望对您或其他阅读本文的人有所帮助,
    亚历克斯

    【讨论】:

    • 哇,我从来不知道。我想我必须去制作一个屏幕变量并在最后使它成为 mainloop 或其他东西,我既不擅长也懒得做。这是有效解决问题的一行代码。多么有帮助!
    • 谢谢,我也遇到了同样的问题。
    【解决方案4】:

    我曾经遇到过你的问题,然后我尝试为 IDLE 创建一个快捷方式,如下所示(不要忘记“-n”):

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

    然后通过快捷方式启动 IDLE,输入您的代码并享受!仅供参考。

    【讨论】:

      【解决方案5】:

      添加 mainloop()exitonclick()done() 或显示您想要退出海龟窗口的 python 的内容

      【讨论】:

        【解决方案6】:

        我在 IDLE 中尝试了代码,它运行良好。你有旧/慢机器吗?虽然我不认为这是问题所在。尝试在末尾添加一行:

        exitonclick()
        

        它可能就像乌龟看起来有点喜怒无常。此外,如果您找到了帮助或解决了您的问题的答案,请务必点赞并接受答案(问题旁边的箭头图标),否则问题会显示为未解决,您将继续获得答案。

        -哈利

        【讨论】:

          【解决方案7】:

          在代码末尾添加以下行:

          wait_for_user()

          这应该可以解决您的问题!

          【讨论】:

          • 这不是一个turtle.py,也不是Python,也不是tkinter 命令。看起来这是一个 Swampy TurtleWorld 命令,在这里不适用。
          【解决方案8】:

          我正在使用 python 3.6.0 并遇到了同样的问题。代码块后的turtle.done() 可防止海龟图形窗口变得无响应。

          import turtle 
          
          for _ in range(5):
              turtle.forward(100)
              turtle.right(360/5)
          
          turtle.done() # <------------
          

          【讨论】:

            【解决方案9】:

            使用turtle.done()时,第一次可以,第二次不行。

            解决这个问题:

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

            从这里 Problems with running turtle programs in Spyder

            【讨论】:

              【解决方案10】:

              我认为关闭turtle程序的诀窍是重命名'turtle'模块并将其存储为一个新对象,然后调用.done()方法或.exitonclick()方法,例如:

              from turtle import *
              import turtle
              #make a square
              for i in range(4):
                 turtle.forward(100)
                 turtle.left(90)
                 turtle.forward(100)
                 turtle.left(90)
                 turtle.forward(100)
                 turtle.left(90)
                 turtle.forward(100)
                 turtle.done()
              

              或者,类似:

              from turtle import *
              import turtle as t
              #draw a right angle
              for i in range(4):
                 t.forward(100)
                 t.left(90)
                 t.forward(100)
                 t.exitonclick()
              

              单独导入“turtle”模块是行不通的。使用 'from turtle import *' 通配符。然后,您将能够使用诸如 forward() 或 left() 之类的调用函数,而无需使用任何前缀或例如“object_name.forward()”。只要您使用简单的 done() 或 exitonclick() 命令完成代码,它就可以工作:

              from turtle import *
              
              forward(100)
              shape('turtle')
              right(90)
              forward(100)
              right(90)
              forward(100)
              right(90)
              forward(100)
              done()
              

              【讨论】:

                【解决方案11】:

                当我遇到同样的问题时,我自己测试了很多东西来解决这个问题。

                所以我搜索了很多资源后发现是这样的:

                注意。单击海龟图形窗口时,Windows 用户会出现此问题。

                首先,我发现spyder环境非常有用

                第二,这条线工作得很好:

                Turtle.bye()
                

                这将结束执行,无需单击。

                当然,任何人都需要查看窗口上发生了什么,所以我建议添加以下内容:

                import time
                import turtle
                
                <your code on turtle>
                
                time.sleep(5)
                Turtle.bye() 
                

                记得把 Turtle 写成大写的 t。

                【讨论】:

                  【解决方案12】:

                  可能有很多原因:- 1.你可能有一个名为turtle的python文件(如果你有一个重命名它) 2.尝试在代码末尾使用 t.done()

                  【讨论】:

                  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                  猜你喜欢
                  • 2019-04-23
                  • 2020-01-10
                  • 1970-01-01
                  • 2023-02-25
                  • 2018-05-30
                  • 2019-01-28
                  • 2014-03-18
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多