Не понятно, о чем вы спрашиваете, но я предполагаю, что это две вещи: во-первых, как добавить еще одну движущуюся линию;во-вторых, как установить углы этих линий в соответствии с фактическим (местным) временем.Я переработал ваш код ниже, чтобы сделать обе эти вещи, и бросил в часовую стрелку, а также стоимость низкая.Что следует учесть:
Вы не хотите делать это с одиночной черепахой - вам нужно как минимум с двумя .В противном случае, когда вы звоните clear()
, вы теряете все , включая циферблат, и должны его перерисовать.Вы можете обойти это, используя undo()
, или, проще говоря, одну черепаху, чьи рисунки являются постоянными (циферблат), и другую, чьи рисунки очищаются на каждом тике (стрелки).
Другие измененияниже: бросание time.sleep()
в пользу собственного события ontimer()
черепахи;переключение с API-интерфейса, основанного на функции черепахи, на его объектно-ориентированный , чтобы мы могли управлять двумя черепахами.И я переключил черепаху в режим Logo , который устанавливает нулевые градусы в верхней части экрана и устанавливает углы для графики по часовой стрелке вместо противпо часовой стрелке (что полезно, если вы используете часы!)
from turtle import Screen, Turtle, Vec2D
from time import localtime
CENTER = Vec2D(0, 0)
def draw_line(position, heading, length, color):
hands.up()
hands.goto(position)
hands.down()
hands.setheading(heading)
hands.color(color)
hands.forward(length)
def tick():
time = localtime()
second_heading = time.tm_sec * 6
minute_heading = time.tm_min * 6 + second_heading / 60
hour_heading = time.tm_hour % 12 * 30 + minute_heading / 12
hands.clear()
draw_line(CENTER, second_heading, 300, 'red')
draw_line(CENTER, minute_heading, 200, 'blue')
draw_line(CENTER, hour_heading, 100, 'green')
screen.update()
screen.ontimer(tick, 1000)
screen = Screen()
screen.mode("logo") # 0 degrees at top, clockwise angles!
screen.tracer(False) # force manual screen updates
# What this turtle draws is "permanent"
dial = Turtle(visible=False)
dial.penup()
dial.dot()
dial.setx(330) # remember mode is "logo"
dial.pendown()
dial.circle(330)
# What this turtle draws has to be redrawn on every tick
hands = Turtle(visible=False)
tick()
screen.mainloop()
![enter image description here](https://i.stack.imgur.com/Nurw1.png)