封装得很好的七段数码管Python turtle绘图

7段数码管Python绘图,获取用time获取系统时间,用turtle将年月日打印出来,计算打印所需时间.代码如下:

import time
import turtle as t

#利用多个小函数,化繁为简
#绘制单个数字连接处的小间隔,模块化思维
def drawgap(ft):
    t.penup()
    t.fd(0.12*ft)

#绘制单个数字的某一条线
def drawline(e,ft):
    drawgap(ft)
    t.pendown() if e else t.penup()
    t.fd(0.76*ft)
    drawgap(ft)
    t.right(90)

#绘制单个数字,规则化思维
def draw(digit,ft):
    vd=eval(digit)
    drawline(True,ft) if vd in [2,3,4,5,6,8,9] else drawline(False,ft)
    drawline(True,ft) if vd in [0,1,3,4,5,6,7,8,9] else drawline(False,ft)
    drawline(True,ft) if vd in [0,2,3,5,6,8,9] else drawline(False,ft)
    drawline(True,ft) if vd in [0,2,6,8] else drawline(False,ft)
    t.left(90)
    drawline(True,ft) if vd in [0,4,5,6,8,9] else drawline(False,ft)
    drawline(True,ft) if vd in [0,2,3,5,6,7,8,9] else drawline(False,ft)
    drawline(True,ft) if vd in [0,1,2,3,4,7,8,9] else drawline(False,ft)
    t.right(180)
    t.penup()
    t.fd(0.8*ft)

#打印汉字前的调整
def prelocation(ft):
    t.penup()
    t.fd(-10)
    t.right(90)
    t.fd(1.2*ft)
    t.left(90)

#打印汉字后的调整
def relocation(ft):
    t.fd(2*ft)
    t.left(90)
    t.fd(1.2*ft)
    t.right(90)

#main()函数只负责画图,图的其他设置写在代码中,不占用main()函数,提高main()函数复用性
def main(ft,fontype,digitnum):
    wdsize=int(ft)
    t.pensize(0.11 * ft)
    t.pencolor('red')
    for each in digitnum:
        if each=='+':
            prelocation(ft)
            t.write('',font=(fontype,wdsize,'normal'))
            relocation(ft)
            t.pencolor('green')
        elif each=='-':
            prelocation(ft)
            t.write('',font=(fontype,wdsize,'normal'))
            relocation(ft)
            t.pencolor('blue')
        elif each=='=':
            prelocation(ft)
            t.write('',font=(fontype,wdsize,'normal'))
            relocation(ft)
        else:
            draw(each,ft)

#插入计时尾注
def footnote(dur,ft):
    t.right(90)
    t.fd(120)
    t.left(90)
    t.fd(-250)
    t.pencolor('gray')
    t.write('绘图用时{:.3f}s'.format(dur),font=('SimHei',int(0.4*ft),'italic'))
    t.hideturtle()
    t.done()

#主函数,包括调取系统时间,设置字体大小和类别,展开画布并调整画笔,最后调取main()函数完成制图
digitnum=time.strftime('%Y+%m-%d=',time.gmtime())
foot=46
font_type='Arial'
t.setup(950,350,200,200)
t.penup()
t.fd(-430)
start=time.perf_counter()
main(foot,font_type,digitnum)
interval=time.perf_counter()-start
footnote(interval,foot)

输出如下,很美丽的数码管!

下篇博客扩展一下,设计一个倒计时显示!

posted @ 2018-06-16 22:12  永远怀着一颗学习的心  阅读(1496)  评论(0编辑  收藏  举报