python海龟显示七段数码管实时时间
时间: 2023-08-01 11:10:52 浏览: 107
实例7-七段数码管绘制源代码_python;python绘图;海鬼库_
以下是一个示例程序,可以使用海龟绘制七段数码管,以显示实时时间:
```python
import turtle
import time
# 数码管的宽度和高度
WIDTH = 20
HEIGHT = 50
# 数码管的线段坐标
SEGMENTS = [
[(0, 0), (0, HEIGHT)],
[(0, HEIGHT), (WIDTH, HEIGHT)],
[(WIDTH, HEIGHT), (WIDTH, HEIGHT // 2)],
[(WIDTH, HEIGHT // 2), (0, HEIGHT // 2)],
[(0, HEIGHT // 2), (0, 0)],
[(0, 0), (WIDTH, 0)],
[(WIDTH, 0), (WIDTH, HEIGHT // 2)]
]
# 数字的七段编码
DIGITS = {
"0": [1, 1, 1, 0, 1, 1, 1],
"1": [0, 0, 1, 0, 0, 1, 0],
"2": [1, 0, 1, 1, 1, 0, 1],
"3": [1, 0, 1, 1, 0, 1, 1],
"4": [0, 1, 1, 1, 0, 1, 0],
"5": [1, 1, 0, 1, 0, 1, 1],
"6": [1, 1, 0, 1, 1, 1, 1],
"7": [1, 0, 1, 0, 0, 1, 0],
"8": [1, 1, 1, 1, 1, 1, 1],
"9": [1, 1, 1, 1, 0, 1, 1]
}
# 绘制一个数码管
def draw_segment(x, y, on=True):
pen.penup()
pen.goto(x, y)
pen.pendown()
if on:
pen.fillcolor("red")
else:
pen.fillcolor("gray")
pen.begin_fill()
for segment in SEGMENTS:
pen.goto(x + segment[0][0], y + segment[0][1])
pen.goto(x + segment[1][0], y + segment[1][1])
pen.end_fill()
# 绘制一个数字
def draw_digit(x, y, digit):
for i, on in enumerate(DIGITS[digit]):
draw_segment(x, y + (6 - i) * HEIGHT, on)
# 显示时间
def show_time():
pen.clear()
t = time.strftime("%H:%M:%S")
for i, digit in enumerate(t):
draw_digit(i * (WIDTH + 10) - ((len(t) - 1) * (WIDTH + 10)) / 2, 0, digit)
screen.update()
# 每秒钟更新一次时间
screen.ontimer(show_time, 1000)
# 创建画布和画笔
screen = turtle.Screen()
screen.setup(600, 200)
pen = turtle.Turtle()
pen.hideturtle()
pen.speed(0)
pen.penup()
# 显示时间
show_time()
turtle.done()
```
在这里,`SEGMENTS`是七段数码管的线段坐标。`DIGITS`是数字的七段编码。`draw_segment()`函数绘制一个数码管,`draw_digit()`函数绘制一个数字。`show_time()`函数使用`draw_digit()`函数绘制当前时间的每个数字。`screen.ontimer(show_time, 1000)`函数调度`show_time()`函数每秒钟更新一次时间。
阅读全文