目录
晶体数码管绘制顺序
晶体数码管绘制函数
获取并绘制当前时间
Hello!你好哇,我是灰小猿!一个超会写bug的程序猿!
今天和大家分享一个关于使用Python绘制晶体数码管管的项目,目的是能够使用该程序会,任意的绘制出数字,先来看一个绘制数字0~9的效果:
晶体数码管绘制顺序
晶体数码管的绘制,是采用trutle库来进行绘制,数码管的绘制顺序如下:
从图中可以看出,绘制起点在数码管的中部左侧,在这七段数码管中,无论每一段是否被绘制出来,画笔都会按照上方的顺序绘制完这七段。
晶体数码管绘制函数
代码语言:javascript复制from turtle import *
import datetime
#数码管间隔函数
def drawGap():
penup()
fd(5)
#单段数码管绘制
def drawLine(draw):
drawGap()
if draw :
pendown()
else:
penup()
fd(40)
drawGap()
right(90)
#输入数据绘制
def drawDigit(n):
#第一段
if n in [2,3,4,5,6,8,9]:
drawLine(True)
else:
drawLine(False)
#第二段
if n in [0,1,3,4,5,6,7,8,9]:
drawLine(True)
else:
drawLine(False)
#第三段
if n in [0,2,3,5,6,8,9]:
drawLine(True)
else:
drawLine(False)
#第四段
if n in [0,2,6,8]:
drawLine(True)
else:
drawLine(False)
left(90)
#第五段
if n in [0,4,5,6,8,9]:
drawLine(True)
else:
drawLine(False)
#第六段
if n in [0,2,3,5,6,7,8,9]:
drawLine(True)
else:
drawLine(False)
#第七段
if n in [0,1,2,3,4,7,8,9]:
drawLine(True)
else:
drawLine(False)
left(180)
penup()
fd(20)
if __name__ == "__main__":
#绘制数字0~9
for i in range(0,10):
drawDigit(i)
获取并绘制当前时间
接下来是通过上面的绘制数码管的函数,获取当前时间并显示:
代码语言:javascript复制from turtle import *
import datetime
import time
#数码管间隔函数
def drawGap():
penup()
fd(5)
#单段数码管绘制
def drawLine(draw):
drawGap()
if draw :
pendown()
else:
penup()
fd(40)
drawGap()
right(90)
#输入数据绘制
def drawDigit(n):
#第一段
if n in [2,3,4,5,6,8,9]:
drawLine(True)
else:
drawLine(False)
#第二段
if n in [0,1,3,4,5,6,7,8,9]:
drawLine(True)
else:
drawLine(False)
#第三段
if n in [0,2,3,5,6,8,9]:
drawLine(True)
else:
drawLine(False)
#第四段
if n in [0,2,6,8]:
drawLine(True)
else:
drawLine(False)
left(90)
#第五段
if n in [0,4,5,6,8,9]:
drawLine(True)
else:
drawLine(False)
#第六段
if n in [0,2,3,5,6,7,8,9]:
drawLine(True)
else:
drawLine(False)
#第七段
if n in [0,1,2,3,4,7,8,9]:
drawLine(True)
else:
drawLine(False)
left(180)
penup()
fd(20)
#根据输入内容进行绘制
def drawDate(date):
for i in date:
if i=="-":
write("年",font=("楷体",20,"normal"))
fd(40)
elif i=="=":
write("月",font=("楷体",20,"normal"))
fd(40)
elif i=="_":
write("日",font=("楷体",20,"normal"))
fd(40)
elif i==" ":
write("时",font=("楷体",20,"normal"))
fd(40)
elif i=="#":
write("分",font=("楷体",20,"normal"))
fd(40)
elif i=="*":
write("秒",font=("楷体",20,"normal"))
fd(40)
else:
drawDigit(eval(i))
if __name__ == "__main__":
setup(800,400,100,100)
pensize(5)
pencolor("red")
penup()
fd(-550)
while(True):
drawDate(datetime.datetime.now().strftime("%Y-%m=%d_%H %M#%S*"))
效果如下:
觉得有用记得点赞关注哟!
大灰狼陪你一起进步!