使用turtle实现一个时钟

143 阅读1分钟
import turtle
import datetime

# 创建一个画布
canvas = turtle.Screen()

# 创建一个画笔
pen = turtle.Turtle()

# 设置画笔属性
pen.speed(1)  # 设置绘制速度
pen.shape("turtle")
pen.color("black")


# 绘制钟表的外形
def draw_clock_boundary():
    pen.penup()
    pen.goto(0, -140)  # 定位到钟表中心位置
    pen.pendown()
    pen.circle(140)  # 绘制钟表的圆形边界


# 绘制钟表的刻度线
def draw_clock_ticks():
    pen.penup()
    pen.goto(0, 0)  # 回到钟表中心位置
    pen.setheading(90)  # 设置指针的朝向为北

    for _ in range(12):
        pen.penup()
        pen.forward(120)  # 移动到刻度线的起始位置
        pen.pendown()
        pen.forward(20)  # 绘制刻度线的长度
        pen.penup()
        pen.goto(0, 0)  # 回到钟表中心位置
        pen.right(30)  # 右转30度


# 绘制钟表的指针
def draw_clock_hands():
    current_time = datetime.datetime.now()
    hour = current_time.hour % 12  # 获取当前小时(12小时制)
    minute = current_time.minute
    second = current_time.second

    # 绘制时针
    pen.penup()
    pen.goto(0, 0)  # 回到钟表中心位置
    pen.pendown()
    pen.setheading(90)  # 设置指针的朝向为北
    angle = (hour + minute / 60) * 30  # 计算时针的角度
    pen.right(angle)
    pen.forward(80)  # 绘制时针的长度

    # 绘制分针
    pen.penup()
    pen.goto(0, 0)
    pen.pendown()
    pen.setheading(90)
    angle = (minute + second / 60) * 6
    pen.right(angle)
    pen.forward(110)

    # 绘制秒针
    pen.penup()
    pen.goto(0, 0)
    pen.pendown()
    pen.setheading(90)
    angle = second * 6
    pen.right(angle)
    pen.forward(130)


# 绘制整个时钟
def draw_clock():
    draw_clock_boundary()
    draw_clock_ticks()
    draw_clock_hands()


# 绘制时钟
draw_clock()

# 关闭画布
canvas.exitonclick()  

运行这段代码,你将会看到一个使用turtle模块绘制的时钟。时钟的外形使用 turtle.circle 命令绘制,刻度线使用循环和 pen.forward 命令定位和绘制。指针的绘制通过计算当前时间的小时、分钟和秒钟,然后根据相应的角度使用 pen.rightpen.forward 命令绘制。

请注意,这个示例代码只绘制了一个简单的时钟效果。如果你希望进一步改进或增加其他功能,可以根据自己的需求进行修改