2.3 turtle库
turtle库是能够进行基本的图形绘制的标准库。
turtle库包含100多个功能函数,主要包括三类:窗体函数、画笔运动函数、画笔状态函数
2.3.1 窗体函数
注:像素是指组成图像的小方格,每个小方格都有一个明确的位置和被分配的色彩数值。
另外画布的大小与计算机的分辨率有关系,计算机的分辨率是指显示器所能显示的像素有多少。
窗体函数写法:turtle.setup(width,height,startx,starty)
需要与turtle.done()配合使用,否则运行出的窗口会消失。因此done()函数需要在绘制程序的最后面
import turtle
turtle.setup(200,200,50,50)#窗格大小为200X200,距离屏幕左侧与顶部均为50
turtle.done()#done()函数保证运行出的窗口一直显示
输出的窗格:
2.3.2 画笔运动函数
重点的画笔运动函数:
**注意:**若不指定方向和起点,则默认方向为向右,默认起点为窗格正中心。
- forward()函数:沿着当前方向前进指定距离。可以简写为fd()
import turtle
turtle.setup()
turtle.forward(200)#沿着当前方向前进200个像素
turtle.done()#done()需要在绘制程序的最后面
绘制窗格:
- backward()函数:沿着当前相反方向后退指定距离
也简写为back(),或bk()
import turtle
turtle.setup()
turtle.forward(200)
turtle.forward(200)
turtle.back(200)#沿着指定相反方向后退200个像素
turtle.done()#done()需要在绘制程序的最后面
绘制窗格:
可以看到箭头依旧向右,因为指定方向为右
- right(a)函数:向右旋转a角度
- left(a)函数:向左旋转a角度
import turtle
turtle.setup()
turtle.right(90)#由默认方向向右旋转90度
turtle.fd(200)#绘制200像素
turtle.left(90)#再向左旋转90度
turtle.fd(200)#绘制200像素
turtle.done()#done()需要在绘制程序的最后面
绘制窗格:
- sethead(a)函数:以默认方向为起始,将当前朝向设置为a角度
import turtle
turtle.setup()
turtle.right(90)
turtle.fd(200)
turtle.left(90)
turtle.fd(200)
turtle.seth(120)
turtle.fd(200)
turtle.done()#done()需要在绘制程序的最后面
绘制窗格
可以看到第三条线角度为:以向右为起始偏转120度。
- goto()函数:移动到绝对的坐标处
import turtle
turtle.goto(100,100)
turtle.goto(-100,100)
turtle.done()
绘制窗格
可以看到位置是根据绝对坐标进行变换的,始终以屏幕正中心为(0,0)
- circle(r,e)函数:绘制一个指定半径r和角度e的圆或者弧形
import turtle
turtle.circle(100,200)
turtle.done()
绘制窗格
-
undo()函数:撤销画笔的最后一步动作
-
speed()函数:设置画笔的绘制速度,参数为0-10之间。
-
绘制八边形
import turtle
for i in range(8):
turtle.seth(i*360/8)
turtle.fd(100)
turtle.done()
绘制窗格
2.3.3 画笔状态函数
- penup()函数:提起画笔,即使位置移动也不会绘制线条
- pendown()函数:放下画笔,继续绘制。
import turtle
turtle.penup()#提起画笔
turtle.fd(200)#前进200像素
turtle.pendown()#放下画笔
turtle.circle(100,360)#画一个圆
turtle.done()
绘制窗格
- pensize(width)函数:设置画笔的粗细为指定大小
- color()函数:设置画笔的颜色,可以使用英文单词或者十六进制
import turtle
turtle.fd(100)#默认画笔size为1,前进100像素
turtle.pensize(5)#修改size为5
turtle.color("#B80000")#修改颜色
turtle.circle(100,360)#绘制圆
turtle.done()
绘制窗格
- begin_fill()函数和end_fill()函数需要配合使用,填充前调用begin_fill(),填充后调用end_fill()才会完成填充
- filling()函数用于返回填充状态,True为填充,False为未填充。需要在end_fill()前使用才可获得是否成功填充的状态
import turtle
turtle.begin_fill()#开始填充
turtle.color("#B80000")#颜色选择,若不选默认填充黑色
turtle.circle(100,360)#绘制圆
print(turtle.filling())#输出填充状态
turtle.end_fill()#完成填充
turtle.done()
绘制窗格
- clear()函数:清空当前窗口,但不改变画笔位置
- reset()函数:清空当前窗口,并且位置回到默认值
- screensize()函数:设置画布的长和宽
可以结合setup()函数使用,当画布大小大于窗口大小时,会自动出现滚动条
import turtle
turtle.setup(500,500)
turtle.screensize(1000,1000)
- hideturtle()函数:可以隐藏小箭头
- showturtle()函数:可以显示小箭头
import turtle
turtle.setup(500,500)
turtle.screensize(1000,1000)
turtle.hideturtle()#隐藏小箭头
turtle.circle(100,360)
turtle.done()
2.3.4 练习
- 丘比特之心
import turtle
def Peach_heart():#绘制心形
turtle.left(135)
turtle.fd(100)
turtle.right(180)
turtle.circle(50,-180)
turtle.left(90)
turtle.circle(50,-180)
turtle.right(180)
turtle.fd(100)
turtle.begin_fill()#调用填充函数
turtle.color('red')#颜色为红色
Peach_heart()#调用心形函数
turtle.penup()#提起画笔
turtle.goto(100,30)#位置定位为100,30处
turtle.pendown()#放下画笔
turtle.seth(0)#初始角度调整为0
Peach_heart()#再次调用心形函数
turtle.end_fill()#完成填充
turtle.penup()#提起画笔
turtle.goto(-100,30)
turtle.pendown()
turtle.seth(25)#角度调整为25
turtle.pensize(5)#画笔size调整
turtle.color('black')
turtle.fd(350)#绘制直线
turtle.done()
绘制窗格