实例
1.描述:利用turtle库绘制七段数码管的日期显示
2.思路:抽象规则,七段数码管按照一定的步序绘制,将其模块化,其中根据具体的数字决定在绘制过程中海龟是否落笔还是飞跃。
3.代码
#SevenDigitsDraw.py
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(d): #根据数字绘制七段数码管(按照绘制七段的步序编字形码)
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)
turtle.left(90) #走完1,2,3,4一圈,调整方向,进入5,6,7
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)
turtle.left(180) #走完5,6,7,调整方向,进入下一个数字的绘制
turtle.penup()
turtle.fd(20)
def drawDate(date): #通过date输入初始日期,按照指定格式输出年,月,日标识
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))
def main():
turtle.setup(800, 350, 200, 200) #初始化turtle图形绘制窗口
turtle.penup()
turtle.fd(-350)
turtle.pensize(5)
# drawDate('2020-02=07+') 不采取手动输入时间的方法,直接利用time库获取计算机时间
drawDate(time.strftime('%Y-%m=%d+',time.gmtime())) #格式化
turtle.hideturtle()
turtle.done()
main()
关于turtle.write使用方法的总结
基本格式:
write(arg,move=false,align=‘left’,font=(‘fontname,fontsize,fonttype’))
arg ————文本内容
move(可选) ————真/假,默认假
align(可选)————left,center或right
font(可选) ————三个字体(fontname,fontsize,fonttype)
fontname: (字体) fontsize:(大小) fonttype: (默认值)
一般使用'Arial' 三种类型:
其他文本类型可搜索 1. 正常(normal)√常用
2. 粗体(bold)
3. 斜体(italic)
示例:
turtle.write('年',font=("Arial", 18, "normal"))