用turtle绘画电子数码管

编程入门 行业动态 更新时间:2024-10-08 00:28:14

用turtle绘画电子<a href=https://www.elefans.com/category/jswz/34/1769521.html style=数码管"/>

用turtle绘画电子数码管

今天我来用用turtle绘画电子数码管,在进入主题之前我们先理一下绘制这个电子数码管基本思路 

 基本思路

  1. 绘制单个数字对应的数码管
  2. 获得一串数字,绘制对应的数码管
  3. 获得当前系统时间,绘制对应的数码管 

 绘制单段间隔

def drawGap():  #定义drawGappenup()fd(5)      #提笔,移动

 绘制单段数码管(单个数字),代码如下

def drawLine(draw):  #定义drawLine函数if draw:pendown()else:penup()fd(40)drawGap()right(90)
  1.  七段数码管由7个基本线条组成
  2. 七段数码管可以有固定顺序
  3. 不同数字显示不同的线条

 

 

根据数字绘制七段数码管(多个数字),代码如下

def drawDigit(digit):    #定义drawDigitpencolor(random(), random(), random())drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)#绘制一号线pencolor(random(), random(), random())#设置随机颜色drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)#绘制二号线pencolor(random(), random(), random())#设置随机颜色drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)#绘制三号线pencolor(random(), random(), random())#设置随机颜色drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)#绘制四号线pencolor(random(), random(), random())#设置随机颜色left(90)#在四号线和五号线之间需要直线,所以需要和四号线平行drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)#绘制五号线pencolor(random(), random(), random())#设置随机颜色drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)#绘制六号线pencolor(random(), random(), random())#设置随机颜色drawLine(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)#绘制七号线pencolor(random(), random(), random())#设置随机颜色left(180)penup()#为绘制后续数字确定位置fd(20)#为前后两数字之间分离的距离

 

 

 

获取要输出的数字(系统日期)
 

def drawDate(date): #date为日期,格式为%Y-%m=%d+%H@%M#%S&for i in date:if i == '-':write('年', font=("楷体", 20, "normal"))fd(40)elif i == '=':write('月', font=("楷体", 20, "normal"))fd(40)elif i == '+':write('日', font=("楷体", 20, "normal"))fd(40)elif i =='@':write('时', font=("楷体", 20, "normal"))fd(40)elif i =='#':write('分', font=("楷体", 20, "normal"))fd(40)elif i =='&':write('秒', font=("楷体", 20, "normal"))else:drawDigit(eval(i))#调用drawDigit()函数

编写主函数(函数调用,画布画笔的设置)
 

def main():setup(1200, 400, 200, 200)#设置画布坐标和大小penup()fd(-600)pensize(5)#设置画笔的粗细drawDate(time.strftime('%Y-%m=%d+%H@%M#%S&', time.localtime()))hideturtle()done()

 调用主函数

main()

 完整代码如下

from turtle import *
from random import *
import timedef drawGap():penup()fd(5)def drawLine(draw):if draw:pendown()else:penup()fd(40)drawGap()right(90)def drawDigit(digit):pencolor(random(), random(), random())drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)pencolor(random(), random(), random())drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)pencolor(random(), random(), random())drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)pencolor(random(), random(), random())drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)pencolor(random(), random(), random())left(90)drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)pencolor(random(), random(), random())drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)pencolor(random(), random(), random())drawLine(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)pencolor(random(), random(), random())left(180)penup()fd(20)def drawDate(date):for i in date:if i == '-':write('年', font=("楷体", 20, "normal"))fd(40)elif i == '=':write('月', font=("楷体", 20, "normal"))fd(40)elif i == '+':write('日', font=("楷体", 20, "normal"))fd(40)elif i =='@':write('时', font=("楷体", 20, "normal"))fd(40)elif i =='#':write('分', font=("楷体", 20, "normal"))fd(40)elif i =='&':write('秒', font=("楷体", 20, "normal"))else:drawDigit(eval(i))def main():setup(1200, 400, 200, 200)penup()fd(-600)pensize(5)drawDate(time.strftime('%Y-%m=%d+%H@%M#%S&', time.localtime()))hideturtle()done()main()

更多推荐

用turtle绘画电子数码管

本文发布于:2024-02-14 07:16:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762158.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数码管   电子   turtle

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!