# 绘制七段数码管
import turtle, time
def drawGap():
"""
绘制数码管间隔
抬笔,向前5像素
:return:
"""
turtle.penup()
turtle.fd(5)
def drawLine(draw):
"""
画线函数
画一条线,通过控制画笔抬起,放落,画线。
:param draw: True
:return:
"""
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
def drawDigit(digit):
"""
画数字函数;
调用画线函数画出每一个数字;
思路:每个数字由7条线组成,根据每条线来处理数字
:param digit: 数字
:return:
"""
# 画第一条线,其中数字(2,3,4,5,6,8,9)用到此线
drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
# 画第二条线,其中数字(0,1,3,4,5,6,7,8,9)用到此线
drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
# 画第三条线,其中数字(0,2,3,5,6,8)用到此线
drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
# 画第四条线,其中数字(0,2,6,8)用到此线
drawLine(True) if digit in [0,2,6,8] else drawLine(False)
# 改变方向
turtle.left(90)
# 画第五条线,其中数字(0,4,5,6,8,9)用到此线
drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
# 画第六条线,其中数字(0,2,3,5,6,7,8,9)用到此线
drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
# 画第七条线,其中数字(0,1,2,3,4,7,8,9)用到此线
drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
# 画完旋转180度
turtle.left(180)
# 抬笔
turtle.penup()
# 向前20像素
turtle.fd(20)
def drawDate(date):
"""
调用画数字函数
:param date: 日期 格式 '%Y-%m=%d+'
:return:
"""
turtle.pencolor('red')
for i in date:
if i == '-':
# 调整字的位置
turtle.right(90)
turtle.fd(50)
turtle.write('年', font=('Arial',18,'normal'))
turtle.pencolor('green')
# 返回原位
turtle.fd(-50)
turtle.left(90)
turtle.fd(40)
elif i == '=':
turtle.right(90)
turtle.fd(50)
turtle.write('月', font=('Arial',18,'normal'))
turtle.pencolor('blue')
turtle.fd(-50)
turtle.left(90)
turtle.fd(40)
elif i == '+':
turtle.right(90)
turtle.fd(50)
turtle.write('日', font=('Arial',18,'normal'))
turtle.fd(-50)
turtle.left(90)
else:
drawDigit(eval(i))
if __name__ == '__main__':
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
# drawDate('2020-07=28+')
drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
turtle.hideturtle()
turtle.done()
绘制七段数码管
最新推荐文章于 2024-10-31 10:20:59 发布