import turtle
import time
screen = turtle.Screen()
screen.title("7段数码管显示系统时间")
screen.setup(width=1000, height=400)
screen.bgcolor("black")
pen = turtle.Turtle()
pen.speed(0)
pen.hideturtle()
segments = [
[(-20, 80), (20, 80)],
[(30, 70), (30, 30)],
[(30, 10), (30, -30)],
[(-20, -40), (20, -40)],
[(-30, 10), (-30, -30)],
[(-30, 70), (-30, 30)],
[(-20, 0), (20, 0)]
]
digit_segments = {
'0': [1, 1, 1, 1, 1, 1, 0],
'1': [0, 1, 1, 0, 0, 0, 0],
'2': [1, 1, 0, 1, 1, 0, 1],
'3': [1, 1, 1, 1, 0, 0, 1],
'4': [0, 1, 1, 0, 0, 1, 1],
'5': [1, 0, 1, 1, 0, 1, 1],
'6': [1, 0, 1, 1, 1, 1, 1],
'7': [1, 1, 1, 0, 0, 0, 0],
'8': [1, 1, 1, 1, 1, 1, 1],
'9': [1, 1, 1, 1, 0, 1, 1],
'-': [0, 0, 0, 0, 0, 0, 1]
}
def draw_segment(segment_index, x, y, color):
"""绘制单个线段"""
pen.penup()
pen.goto(x + segments[segment_index][0][0], y + segments[segment_index][0][1])
pen.pendown()
pen.color(color)
pen.pensize(5)
pen.goto(x + segments[segment_index][1][0], y + segments[segment_index][1][1])
def draw_digit(digit, x, y, color):
"""绘制一个数字"""
if digit in digit_segments:
for i in range(7):
if digit_segments[digit][i]:
draw_segment(i, x, y, color)
def draw_colon(x, y, color):
"""绘制冒号"""
pen.penup()
pen.goto(x, y + 20)
pen.pendown()
pen.color(color)
pen.dot(10)
pen.penup()
pen.goto(x, y - 20)
pen.pendown()
pen.dot(10)
def draw_text(text, x, y, color):
"""绘制文本"""
pen.penup()
pen.goto(x, y - 60)
pen.pendown()
pen.color(color)
pen.write(text, align="center", font=("Arial", 12, "normal"))
def draw_time():
"""绘制当前时间"""
current_time = time.localtime()
year = time.strftime("%Y", current_time)
month = time.strftime("%m", current_time)
day = time.strftime("%d", current_time)
hour = time.strftime("%H", current_time)
pen.clear()
x_pos = -350
for digit in year:
draw_digit(digit, x_pos, 0, "red")
x_pos += 60
draw_text("年", x_pos - 120, 0, "red")
x_pos += 40
for digit in month:
draw_digit(digit, x_pos, 0, "green")
x_pos += 60
draw_text("月", x_pos - 120, 0, "green")
x_pos += 40
for digit in day:
draw_digit(digit, x_pos, 0, "blue")
x_pos += 60
draw_text("日", x_pos - 120, 0, "blue")
x_pos += 40
for digit in hour:
draw_digit(digit, x_pos, 0, "yellow")
x_pos += 60
draw_text("时", x_pos - 120, 0, "yellow")
screen.ontimer(draw_time, 1000)
draw_time()
turtle.done()