什么是turtle库?
turtle库是python的标准库之一。是python的基础绘图库。
简单来说,turtle库也就用来做基本图形绘制用的,turtle又有海龟的意思也被称为‘海龟’库。
既然学习turtle库,那么就要知道turtle库的用法能干嘛?
先看看用turtle库做出来的图形吧?
如何使用turtle库?
1)设置画布大小
turtle.函数 | 说明 |
---|
turtle.screensize(canvwidth,canvheight,bg) | 设置画布尺寸(画布宽,画布高,背景颜色) |
turtle.setup(width,height,startx,starty) | 设置画布尺寸(画布宽,画布高,距离屏幕左侧距离,距离屏幕右侧距离) |
turtle.screensize()参数分别为画布的宽,高,背景颜色。例如turtle.screensize(1000,500,“red”)如果不提供参数则返回默认大小(400,300)
turtle.setup()width和height表示宽和高,如果输出的参数为整数则表示为大小,单位为像素。如果输入的参数为小数则表示为占据屏幕的比例。
startx和starty表示窗口的左上角坐标距离屏幕左上角坐标的左侧和上侧距离。例如:turtle.setup(0.5,0.5)#就表示占据的尺寸。turtle.setup(800,400,100,100)#就表示所生成的窗口大小为800*400,距离屏幕左侧和上侧为100。
2)运动控制画笔
以画布中心为原点,建立直角坐标系,turtle海龟朝向x轴的正半轴。
turtle函数 | 说明 |
---|
turtle.forward(distance) | 海龟正反向移动d像素距离 |
turtle.backward(distance) | 海龟反方向移动d像素距离 |
turtle.circle(r,angle) | 海龟的左上方向做以angle为角度,r为半径的圆周运动 |
turtle.seth(angle) | 改变海龟的运动角度 |
turtle.left(degree) | 海龟顺时针移动程度 |
turtle.left(degree) | 海龟逆时针移动程度 |
turtle.goto(x,y) | 海龟移动到(x,y)的位置 |
turtle.penup() | 抬起画笔 |
turtle.pendown() | 放下画笔 |
turttle.circle(radius,extent,steps) | 做半径为r的圆内切多边形,多边形的边为steps |
3)设置画笔属性
turtle函数 | 说明 |
---|
turtle.pensize() | 设置画笔大小 |
turtle.pencolor() | 设置画笔颜色,采用RGB字符 |
turtle.speed(speed) | 设置画笔速度,范围在[1,10]之间,数字越大侧越快 |
4)画笔控制命令
turtle函数 | 说明 |
---|
turtle.stamp() | 复制当前图形 |
turtle.fillcolor(colorstring) | 设置图形填充颜色 |
turtle.color(color1,color2) | 同时设置pencolor和fillcolor |
turtle…begin_fill() | 准备开始填充图形 |
turtle.end_fill() | 结束填充图形 |
turtle.hideturtle() | 隐藏画笔turtle形状 |
turtle.showturtle() | 显示画笔turtle形状 |
turtle.reset() | 恢复所有设置 |
turtle.clear() | 清空窗口,但turtle的位置和状态 |
turtle.undo() | 撤销上一个动作 |
turtle.isvisble() | 返回当前turtle是否可见 |
turtle.writes(s[,font = (“font-name”,“font-size”,“font-tage”)]) | s为文本内容,name字体名称,size大小,tege类型一般为‘normal’ |
七段晶体管示例
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,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('20200509')
turtle.hideturtle()
turtle.done()
main()