用数码管显示系统实时时间需要用到turtle、datetime以及time这三个函数,调出系统时间进行运用并控制数码管绘制过程实现这一程序! 

最后呈现出来的结果会是一个动态的数码管,每秒钟刷新一次,来达到实时时钟的效果。

代码如下:

from turtle import *
from datetime import *
import time
def drawGap():    #每一小段数码管间隔的绘制
    penup()
    fd(6)
def drawLine(draw):    #单个数码管的绘制
    drawGap()
    pendown() if draw else penup()    
    fd(40)
    drawGap()
    right(90)
def drawDigit(d):
    speed(50)
    drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,6,8] else drawLine(False)
    left(90)
    drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if d in [0,1,2,3,4,7,8,9] else drawLine(False)
    left(180)
    penup()
    fd(20)
def drawDate(date):    #调用系统时间,格式为"%Y!",以此类推
    pencolor("red")    #全局数码管颜色设置           
    for i in date:
        if i == "!":
            write("年", font = ("Arial", 25, "normal"))
            pencolor("blue")    #单个数码管颜色设置
            fd(40)    #单个数码管的间隔
        elif i == "@":
            write("月", font = ("Arial", 25, "normal"))
            pencolor("orange")
            fd(40)
        elif i == "#":
            write("日", font = ("Arial", 25, "normal"))
            pencolor("green")
            fd(40)
        elif i == "$":
            write("时", font = ("Arial", 25, "normal"))
            pencolor("pink") 
            fd(40)
        elif i == "^":
            write("分", font = ("Arial", 25, "normal"))
            pencolor("purple")
            fd(40)
        elif i == "&":
            write("秒", font = ("Arial", 25, "normal"))
        else:
            drawDigit(eval(i))    #使用eval()函数将数字变为整数
def main():
    setup(1500,350,300,300)
    while True:
        reset()
        penup()
        fd(-600)
        pensize(8)
        tracer(False)    #隐藏绘图,省去绘图过程的时间,直接显示绘画结果
        hideturtle()
        drawDate(datetime.now().strftime("%Y!%m@%d#%H$%M^%S&"))
        time.sleep(1)    #推迟一秒执行
    done()
main()

运行结果如下:

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐