文章目录
- 一、七段数码管的原理
- 二、静态实现
- 三、动态显示
- 四、总结
七夕前后收到电子贺卡,使用Python的turtle库实现七段数码管绘制,正好最近复习python海龟绘图,做一个简单实现。
七段数码管可以用来表示我们生活中的数字,绘制过程主要有turtle和函数实现
一、七段数码管的原理
选一个起点方向开始绘制,绘制单段数码管
二、静态实现
使用turtle库并使用函数封装绘制七段数码管,显示当前系统日期和时间
#绘制七段数码管
import turtle
def drawGap():#绘制数码管间隔
turtle.penup()
turtle.fd(5)
def drawLine(draw):#绘制单段数码管
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
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 drawData(data):#获得要输出的数字
for i in data:
drawDigit(eval(i))#通过eval()函数将数字转变成整数
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawData('20210815')
turtle.hideturtle()#隐藏海龟画笔
turtle.done()
main()
静态显示的效果需要手动书写日期,实现了绘制功能但不符合实际生产环境
三、动态显示
使用turtle库并使用函数封装绘制七段数码管,显示当前系统日期和时间,通过获取当前时间,动态实现七段数码管绘制
# -*- coding: utf-8 -*-
#绘制七段数码管
import turtle,time
def drawGap():#绘制数码管间隔
turtle.penup()
turtle.fd(5)
def drawLine(draw):#绘制单段数码管
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
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 drawData(data):#获得要输出的数字
turtle.pencolor("RoyalBlue1")
for i in data:
if i == '-':
turtle.write('年',font=("Arial",18,"normal"))
turtle.pencolor("deep sky blue")
turtle.fd(40)
elif i == '=':
turtle.write('月',font=("Arial",18,"normal"))
turtle.pencolor("sky blue")
turtle.fd(40)
elif i == '+':
turtle.write('日',font=("Arial",18,"normal"))
else:
drawDigit(eval(i))#通过eval()函数将数字转变成整数
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawData(time.strftime('%Y-%m=%d+',time.gmtime()))#获取了当前时间,格式化
turtle.hideturtle()#隐藏海龟画笔
turtle.done()
main()
四、总结
通过本项目复习turtle绘图体系,turtle库是python的标准库之一。
turtle绘图窗体
turtle.setup(宽度, 高度,起始点横坐标,起始点纵坐标)
setup()
设置窗体大小及位置 ,4个参数中后两个可选,若未设定窗体坐标,则默认窗体在屏幕中心(以屏幕左上角为原点的相对坐标),setup()
不是必须的