【问题标题】:Is ipyturtle missing much of the full turtle-graphics module?ipyturtle 是否缺少大部分完整的海龟图形模块?
【发布时间】:2020-12-12 00:32:59
【问题描述】:

我第一次尝试 Turtle,遇到了一些麻烦。我正在使用ipyturtle,这是一个小部件,可让您在 Jupyter 笔记本上使用内联 Turtle。它似乎缺少一些命令。例如:

from ipyturtle import Turtle
t = Turtle()
t

size = 10
angle = 20

t.reset()
for a in range(10):
    for i in range(100):
        t.right(1)
        t.forward(i/size)
    t.home()
    t.right(a*angle)

绘制第一行,然后抛出错误:

AttributeError: 'Turtle' object has no attribute 'home'

它似乎还缺少goto()speed() 以及其他关键命令。难道我做错了什么?如果它缺少命令,你怎么知道?我在工程环境中使用了相当多的 Python,但对 Github 不熟悉。我非常感谢您解释浏览我上面链接的页面的人如何嗅出可用命令列表。

我尝试在Repl.it 上运行以下非常相似的代码块,它运行良好:

from turtle import Turtle
t = Turtle()

size = 15
angle = 20

for a in range(1, 19):  
  for i in range(100):
    t.right(1)
    t.forward(i/size)
  t.home()
  t.right(a*angle)

提前感谢您的帮助!

【问题讨论】:

    标签: python jupyter-notebook turtle-graphics ipywidgets python-turtle


    【解决方案1】:

    查看ipyturtle代码,这些是支持的turle方法:

    position(self)
    forward(self, length)
    back(self, length)
    heading(self)
    goto(self, x, y=None)
    setpos(self, x, y=None)
    setposition(self, x, y=None)
    left(self, degree=None)
    right(self, degree=None)
    penup(self)
    pendown(self)
    isdown(self)
    hideturtle(self)
    showturtle(self)
    isvisible(self)
    reset(self)
    pencolor(self,r=-1,g=-1,b=-1)
    

    所以您对home()speed() 的看法是正确的,但goto() 确实 似乎在那里。每个命令似乎也只有一个名称,而不是 Python turtle 中可用的大量别名(例如forward()fd())。

    t.home() 调用可以替换为:

    t.goto(0, 0)
    t.setheading(0)
    

    但在您的示例中,您随后立即执行 right(),以便我们可以将其合并到 setheading() 中。我相信以下内容应该适用于 ipyturtle、Repl.it 和标准 Python:

    from turtle import Turtle
    
    size = 10
    angle = 20
    
    t = Turtle()
    
    for a in range(1, 19):
        for i in range(100):
            t.right(1)
            t.forward(i / size)
        t.goto(0, 0)
        t.setheading(-a * angle)
    

    【讨论】:

    • 谢谢!你在哪里找到那个清单的?我想知道将来在哪里可以找到类似的东西。
    • 顺便说一下,goto() 不适用于我的安装;它会产生我在原始问题中引用的相同属性错误。
    • @IanCanfield,试试setposition(),因为它似乎是goto() 的别名。
    • setposition()setpos() 也不起作用。在这一点上,我将放弃 ipyturtle 并将使用另一种解决方案。无论如何感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多