import turtle
import time

# 设置画布
screen = turtle.Screen()
screen.setup(600, 600)
screen.title("Python 实时动态时钟")
screen.bgcolor("white")
screen.tracer(0)  # 关闭动画，提高刷新效率

# 创建画笔
pen = turtle.Turtle()
pen.hideturtle()
pen.speed(0)

def draw_clock(h, m, s):
    pen.clear()
    
    # 1. 画时钟外圆
    pen.penup()
    pen.goto(0, -210)
    pen.setheading(0)
    pen.pendown()
    pen.pensize(5)
    pen.color("black")
    pen.circle(210)
    
    # 2. 画刻度
    for i in range(12):
        pen.penup()
        pen.goto(0, 0)
        pen.setheading(i * 30 + 90)
        pen.forward(180)
        pen.pendown()
        pen.forward(20)
        
    # 3. 绘制时针 (根据小时和分钟计算角度)
    draw_hand(h * 30 + m * 0.5, 100, 8, "black")
    
    # 4. 绘制分针
    draw_hand(m * 6, 150, 5, "blue")
    
    # 5. 绘制秒针
    draw_hand(s * 6, 180, 2, "red")
    
    # 6. 画中心点
    pen.penup()
    pen.goto(0, -5)
    pen.pendown()
    pen.color("black")
    pen.begin_fill()
    pen.circle(5)
    pen.end_fill()

def draw_hand(angle, length, width, color):
    """绘制指针的辅助函数"""
    pen.penup()
    pen.goto(0, 0)
    pen.color(color)
    pen.pensize(width)
    pen.setheading(90 - angle) # 减去angle是因为turtle是逆时针旋转
    pen.pendown()
    pen.forward(length)

# 主循环
try:
    while True:
        # 获取本地当前时间
        local_time = time.localtime()
        hr = local_time.tm_hour
        mn = local_time.tm_min
        sec = local_time.tm_sec
        
        # 绘制时钟
        draw_clock(hr, mn, sec)
        
        # 更新屏幕
        screen.update()
        
        # 每隔一秒运行一次
        time.sleep(1)
except:
    print("时钟已关闭")

screen.mainloop()