trutle画图之可显示任意数字的晶体数码管设计
【摘要】 目录
晶体数码管绘制顺序
晶体数码管绘制函数
获取并绘制当前时间
Hello!你好哇,我是灰小猿!一个超会写bug的程序猿!
今天和大家分享一个关于使用Python绘制晶体数码管管的项目,目的是能够使用该程序会,任意的绘制出数字,先来看一个绘制数字0~9的效果:
晶体数码管绘制顺序
晶体数码管的绘制,是采用trutle库来进行绘制,数码管的绘制顺序如下: ...
目录
Hello!你好哇,我是灰小猿!一个超会写bug的程序猿!
今天和大家分享一个关于使用Python绘制晶体数码管管的项目,目的是能够使用该程序会,任意的绘制出数字,先来看一个绘制数字0~9的效果:
晶体数码管绘制顺序
晶体数码管的绘制,是采用trutle库来进行绘制,数码管的绘制顺序如下:
从图中可以看出,绘制起点在数码管的中部左侧,在这七段数码管中,无论每一段是否被绘制出来,画笔都会按照上方的顺序绘制完这七段。
晶体数码管绘制函数
-
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)
-
获取并绘制当前时间
接下来是通过上面的绘制数码管的函数,获取当前时间并显示:
-
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*"))
-
-
效果如下:
觉得有用记得点赞关注哟!
大灰狼陪你一起进步!
文章来源: blog.csdn.net,作者:灰小猿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_44985880/article/details/108703654
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)