Python基于turtle海龟画板的"七段数码管绘制显示日历"项目

项目大致需求:利用turtle画板画出当前时间(年月日),如下图:
turtle画板画日历
利用到七段数码管,如下图:
七段数码管
如上图可以看到对于每个数字,都有不同的显示段,例如数字0显示的是图中七段数码管中的abcdef这六段显示管。但是在本项目中,字母编号与上图中不同,我是按照上图中g-b-a-f-e-d-c的顺序分别赋值a-f

绘制单个数码管:
对于本项目来说,我是按照下图中1-7-6-5-4-3-2这样的顺序来的,当然你也可以自己调整。
绘制单个数码管

气死我了,上代码😂😂😂:

# @Time : 2020/4/6
# @File : Chap03.py 
# @Title : "七段数码管绘制" 项目
# @Software: PyCharm

import turtle as t
import time

t.setup(width=1.0,height=1.0)
t.pensize(5)
t.pencolor('red')
t.speed(8)
t.up()
t.bk(700)
t.down()
#drawline()函数会绘制显示的数码管
def drawline():
    t.up()
    t.fd(10)
    t.down()
    t.fd(60)
    t.up()
    t.fd(10)
    t.down()
#drawnoline()函数会绘制不显示的数码管(也就是提笔,向前一段距离再落笔,并没有留下痕迹)
def drawnoline():
    t.up()
    t.fd(80)
    t.down()
#drawword()函数绘制对应的汉字,年月日时分秒,同时会重新设置画笔颜色位置等
def drawword(word,color="red"):
    t.up()
    t.fd(20)
    t.down()
    t.write(word,font=("Courier",14,"bold"))
    t.pencolor(color)
    t.up()
    t.fd(40)
    t.down()
#获取当前系统时间
time=time.localtime()
#timelist是当前时间全部数字的列表
timelist=list(str(time.tm_year)+str(time.tm_mon)+str(time.tm_mday)+str(time.tm_hour)+str(time.tm_min))
year_len=len(str(time.tm_year))
mon_len=len(str(time.tm_mon))
day_len=len(str(time.tm_mday))
hour_len=len(str(time.tm_hour))
min_len=len(str(time.tm_min))
write_len=0
#这里定义的字典代表每个数字显示的是哪几段数码管,不显示的数码管字母就不在对应的值中
dict={'0':['b','c','d','e','f','g'],
      '1':['b','g'],
      '2':['a','b','c','e','f'],
      '3':['a','b','c','f','g'],
      '4':['a','b','d','g'],
      '5':['a','c','d','f','g'],
      '6':['a','c','d','e','f','g'],
      '7':['b','c','g'],
      '8':['a','b','c','d','e','f','g'],
      '9':['a','b','c','d','f','g']}
for item in timelist:
    list=dict.get(item,"False")
    print("list={}".format(list))
    for i in range(97, 104):
        if chr(i) in list:
            print(chr(i)+"   zai")
            drawline()
            if chr(i)!='d':
                t.left(90)
            continue
        else:
            print(chr(i)+"   buzai")
            drawnoline()
            if chr(i) != 'd':
                t.left(90)
            continue
    t.seth(0)
    t.up()
    t.fd(20)
    t.down
    write_len=write_len+1
    if write_len == year_len:
        drawword("年",color="blue")
    if write_len == year_len+mon_len:
        drawword("月",color="green")
    if write_len == year_len+mon_len+day_len:
        drawword("日",color="orange")
    if write_len == year_len + mon_len+day_len+hour_len:
        drawword("时",color="purple")
    if write_len == year_len + mon_len+day_len+hour_len+min_len:
        drawword("分")
t.hideturtle()
t.done()

最终运行结果如下图:
七段数码管运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偶尔躲躲乌云_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值