这段代码来自于嵩天老师python语言程序设计课程。
import turtle
def drawLine(draw):
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
turtle.right(90)
def drawDigit(digit):
drawLine(True) if digit in [2, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawDate(date):
for i in date:
drawDigit(eval(i))
def main():
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawDate('20181010')
turtle.hideturtle()
turtle.done()
main()
效果如图
在此基础上定义了一个Gap函数来调整图像显示效果,使其更像数码管。并使其能够动态显示实时时间。
import turtle
import time
# import sys
# sys.setrecursionlimit(1000000)
def drawLine(draw):
drawGap()
turtle.pendown() if draw else turtle.penup() # pendown和penup作用相反,pendown是把笔落在画布上
turtle.fd(40) # 前进40
drawGap()
turtle.right(90) # 方向右转90度
def drawGap():
turtle.penup()
turtle.fd(5)
def drawDigit(digit):
drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
drawLine(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawDate():
turtle.tracer(False)#隐藏绘制过程
date = time.strftime('%H-%M=%S+', time.localtime())
turtle.pencolor("red")
for i in date:
if i == '-':
turtle.write('时', font=("Arial", 18, "normal"))
turtle.pencolor('green')
turtle.fd(40)
elif i == '=':
turtle.write('分', font=("Arial", 18, "normal"))
turtle.pencolor('blue')
turtle.fd(40)
elif i == '+':
turtle.write('秒', font=("Arial", 18, "normal"))
else:
drawDigit(eval(i))
turtle.reset()
time.sleep(1)
main()
def main():
turtle.tracer(False)
turtle.setup(800, 350, 200, 200) # 初始画笔坐标和画布尺寸,另外初始画笔方向向右
turtle.penup() # 画笔抬起(也就是不画)
turtle.fd(-300) # 相对初始坐标退后300
turtle.hideturtle()#隐藏Turtle
turtle.pensize(5) # 画笔大小:5
turtle.tracer(True)
drawDate() # 调用drawDate函数
main()
效果如图: