实例7:七段数码管绘制

上一篇写道:

使用保留字def定义函数

lambda定义匿名函数

电子表,交通路口常见七段数码管


turtle绘图体系绘制七段数码管

七段数码管它是有自己的固定顺序的 实例7:七段数码管绘制_第1张图片

我们需要考虑每次绘制完向前移动的距离

就有了下一步

实例7:七段数码管绘制_第2张图片 

步骤三:获取系统时间,绘制七段数码管

使用time库获得系统当前时间

增加年月日标记

年月日颜色不同

import turtle
import time
def drawGap():#绘制数码管间隔,在绘制线之前和之后分别增加一些小的像素作为间隔
    turtle.penup()
    turtle.fd(4)#嵩天老师的代码写的是5,放到我的代码中出不来效果,改了一下,这会效果挺满意的
def drawLine(draw): #绘制单段数码管
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)
def drawDigit(digit):#根据数字绘制七段数码管 ,根据参数digit来决定如何绘制对应的函数,这个digit是一个数字,它的取值范围是0到9也就是整数
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False) #这条语句表示0,1,7的第一条线段不需要被绘制,像8这个数字每条线都需要画出来,可见后面的语句中都含有8
    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):#获得要输入的数字,drawDate是将一串字符串拆分成一个个字符的函数(data为日期,格式‘%Y-%m=%d+’)
    turtle.pencolor("magenta")#这个洋红色好像紫色呀
    for i in date:
        if i =='-':
            turtle.write('年',font=("Arial",18,"normal")) #turtle中使用turtle.write函数去绘制一个具体的汉字(这个函数自己应该去学习学习学习)
            turtle.pencolor("gold")
            turtle.fd(40)
        elif i =='=':
            turtle.write('月',font=("Arial",18,"normal"))
            turtle.pencolor ("purple")#这个紫色太紫了呵呵呵,是有区分的
            turtle.fd(40)
        elif i =='+':
             turtle.write('日',font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i)) #通过eval()函数将数字变为整数
     
def main():#定义一个主函数main,这个main设定了当前画布的大小,
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
  #  drawDate('20230102')#通过调用函数drawDate参数给main赋予一个参数
    turtle.hideturtle()
    turtle.done()
main()

 

实例7:七段数码管绘制_第3张图片


turtle库是我们学的第一个标准库

但之前没整理这里用到了

整理一下方便理解

turtle的绘图窗体

turtle的一个画布空间最小单位是像素

比如绘制一个100长的直线

指的是100像素长的直线

turtle.setup(width,height,startx,starty) #setup()设置窗体大小及位置,width,height(指窗体本身的宽度和高度)startx,starty(指的是窗子起始点的坐标<左上角>)

#setup()不是必须的,四个参数中后两个可选


turtle.setup(800,400,0,0) #指的是我们生成的窗体它的宽度是800,高是400,窗体的左上角就在电脑屏幕的左上角

turtle.setup(800,400) #宽度是800,高是400,由于没有指定它左上角在屏幕中的位置,系统会默认该窗口在屏幕的正中心

turtle空间坐标体系

在turtle的窗体内部的空间坐标体系

包括绝对坐标和海龟坐标

绝对坐标

是turtle最开始在画布的正中心

正中心的坐标是(0,0) 

海龟的运行方向向着画布的右侧

整个的窗体的右方向是x轴

上方向是y轴

由此构成了一个绝对坐标系

这里有一个很重要的函数叫goto

海龟坐标

对于海龟来讲它的当前行进方向

无论这个方向是朝哪个方向的

它都叫前进方向

反方向是后退方向

海龟运行的左侧叫做左侧方向

右侧叫做右侧方向

#海龟坐标
turtle.fd(d) #指的是向海龟的正前方向运行
turtle.bk(d) #bk表示向海龟的反方向运行
turtle.circle(r,angle)#表示以海龟当前位置,左侧的某一个点为圆心,进行曲线运动

 turtle角度坐标体系

包括绝对角度和海龟角度

绝对坐标下的叫绝对角度

正方向向左转

(0°,90°,180°,270°,360°)

负方向向右转

(0°,-90°,-180°,-270°,-360°)

和数学上是一致的

#绝对角度
turtle.seth(angle) #seth()改变海龟行进方向,只改变方向但不进行,angle为绝对度数

turtle.seth(45) #让海龟的运行方向朝向45°方向
turtle.seth(-135) #让海龟的运行方向朝向反向的-135°方向

#如果在这样的方位中进一步的使用turtle.fd(),它会朝着当前设定的方向直线运行

海龟坐标下的叫海龟角度

#海龟角度
turtle提供了turtle.left(angle), turtle.right(angle)这两个函数,分别让当前的海龟向左或者向右去改变运行方向

实例7:七段数码管绘制_第4张图片

 这个角度我是弄不清楚了呜呜呜


RGB指红蓝绿三中颜色构成万物色

覆盖视力所能感知的所有颜色

RGB每色取值范围0-255整数或0-1小数

RGB色彩体系

英文名称 RGB整数值 RGB小数值 中文名称
white 255,255,255 1,1,1 白色
yellow 255,255,0 1,1,0 黄色
magenta 255,0,255 1,0,1 洋红
cyan 0,255,255 0,1,1 青色
blue 0,0,255 0,0,1 蓝色
black 0,0,0 0,0,0 黑色
seashell 255,245,238 1,0.96,0.93 海贝色
gold 255,215,0 1,0.84,0 金色
pink 255,192,203 1,0.75,0.80 粉色
brown 165,42,42 0.65,0.16,0.16 棕色
purple 160,32,240 0.63,0.13,0.94 紫色
tomato 255,99,71 1,0.39,0.28 番茄色

turtle库默认使用

RGB的小数值来表示颜色

可以切换为整数值来表示颜色

turtle.colormode(mode)
1.0:RGB小数值模式
255:RGB整数值模式
#turtle.colormode(1.0) ,在之后修改颜色时,需要使用RGB小数值
#turtle.colormode(255) ,在之后修改颜色时,需要使用RGB整数值

 turtle画笔控制函数

penup()   抬起画笔,海龟在飞行     
 turtle.penup()  别名 turtle.pu()
pendown()  画笔落下,海龟在爬行 
 turtle.pendown() 别名turtle.pd()
pensize()  设置画笔宽度的 
 turtle.pensize(width) 别名 turtle.width(width)
pencolor() 修改画笔颜色的函数
turtle.pencolor(color)  color为颜色字符串或r,g,b值

pencolor中color参数可以有三种形式

颜色字符串  :turtle.pencolor("purple")
purple是字符串形式而且是小写
RGB的小数值:turtle.pencolor(0.63,0.13,0.94)
RGB的元组值:turtle.pencolor((0.63,0.13,0.94))

turtle运动控制函数

控制海龟行进:走直线&走曲线

turtle.forward(d) 别名 turtle.fd(d)   向前行进,海龟走直线
d:行进距离,可以为负数(单位是像素)
turtle.circle(r,extent=None)  根据半径r绘制extent角度的弧形
r:默认圆心在海龟左侧r距离的位置
extent:绘制角度,默认是360度整圆
turtle.circle(100) #指的是在海龟当前位置上,以100像素为半径绘制一个圆形,因为没有给出第二个参数,默认画出整个圆形


turtle.circle(-100,90)#圆心在海龟的右侧,以100像素为半径,绘制的弧度是90度,形成1/4个弧形

方向控制函数

控制海龟面对方向:绝对角度&海归角度

turtle.setheading(angle)  别名turtle.seth(angle) 改变行进方向,海龟走角度
angle:改变行进方向,海龟走角度
#绝对坐标
turtle.seth(45)#表名将海龟的方向转向为绝对坐标系中的45度方向
turtle.seth(-135)#表名将海龟的方向转向为绝对坐标系中的-135度方向
turtle.left(angle)  海龟向左转
turtle.right(angle) 海龟向右转
angle:在海龟当前行进方向上旋转的角度

这篇拖了好久我觉得

希望大家都有个快快乐乐的学习心态

你可能感兴趣的:(python,开发语言)