如何从乌龟底部旋转形状

How can I rotate a shape from the bottom in turtle

我正在尝试制作一个海龟模拟时钟,并制作秒针、分针、时针我正在用海龟制作一个形状,并使用 .tilt() 使其每秒倾斜 6 度。 问题是,当我 运行 .tilt() 它从中间旋转船,而我想让它从底部旋转(就像一个模拟时钟)。 有没有办法做到这一点,或者我需要找到另一种方法来制作这个程序吗?

这是我的代码:

from turtle import *
import time

turtle = Turtle()
turtle.shape("square")
turtle.shapesize(6, .1)

tilt_amnt = 0

for x in range (60):
    turtle.tilt(tilt_amnt)
    tilt_amnt = tilt_amnt + 6
    time.sleep(1)

我不认为有一种方法可以使乌龟倾斜,使其从底部转向,但您可以重写代码以基本上做同样的事情,但改用前向。看看这个。

from turtle import *
import time

turtle = Turtle()
turtle.pensize(2)
turtle.hideturtle()
turtle.speed(0)

tilt_amnt = 0

for x in range (60):
    turtle.right(tilt_amnt)
    turtle.forward(100)
    turtle.backward(100)
    tilt_amnt = tilt_amnt + 6
    time.sleep(1)
    turtle.clear()

一些想法:首先,我不会使用tilt()(高开销,强制更新),即使你确实使用海龟作为手,也可以考虑使用right()setheading();其次,我会使用 mode('logo'),因为这会使屏幕顶部倾斜 0 度,并使标题 顺时针 (例如,说 'clock')而不是 逆时针;第三,如果你想要准确,不要使用sleep(),而是从系统中提取当前时间并相应地设置你的手。

现实世界中的大型时钟确实会从 中间 或更具体地说,从重心转动指针。这可以防止指针在上升过程中减慢机制,或在下降过程中加速机制。诀窍是让指针在视觉上看起来不对称,但保持重量对称。这是 a solution I came up with earlier 以海龟为手,从它们的中心转向做类似的事情。

最后,这里重写了@AlexJoslin 提供的示例以使用实时准确性,可能会在一秒钟内多次更新手的位置:

from turtle import Screen, Turtle
from time import localtime as time

def tick():
    second.setheading(6 * time().tm_sec)
    second.clear()
    second.forward(150)
    second.backward(150)

    screen.update()
    screen.ontimer(tick)

screen = Screen()
screen.mode('logo')
screen.tracer(False)

second = Turtle()
second.hideturtle()
second.pensize(2)

tick()

screen.exitonclick()