第五周作业7段数码管绘制

 

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()

 

 

posted @ 2025-05-05 08:37  linlikun  阅读(12)  评论(0)    收藏  举报