python turtle 库的学习笔记
turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。刚开始绘制时,小海龟位于画布正中央,此处坐标为(0,0),前进方向为水平右方。 在Python3系列版本安装目录的Lib文件下可以找到turtle.py文件。
一 使用import保留字对turtle库的引用有如下3种方式,效果相同:
(1)import turtle
对turtle库中函数调用采用turtle.<函数名>( )形式:
(2)from turtle import *
对turtle库中函数调用采用<函数名>( )形式,不再使用turtle.作为前导:
(3) import turtle as t
保留字as将turtle库给予别名t, 则对turtle库中函数调用采用更简洁的t.<函数名>( )形式:
二 绘图的基础知识
(1)绘图窗口设置命令
turtle.setup(400,300,200,100):参数以此(宽,高,距离屏幕左边距离,距离屏幕上方距离),屏幕左上角原点,单位像素。
(2)运动命令
turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点,向右为x轴,以上为y轴。
turtle.fd(d)、turtle.forward(d):以当前方向,往前行进d像素。
turtle.bk(d)、turtle.backword(d):保持当前方向不变,往后退行d像素。
turtle.circle(r,angle):从当前位置以r为半径圆的angle角度旋转。
(3)方向设置命令
turtle.seth(angle):以x轴方向为起点将方向偏转为angle度,逆时针为正。只改变行进方向但不行进。
turtle.left(angle):在当前行进方向的基础上,向左旋转angle度。
turtle.right(angle):在当前行进方向的基础上,向右旋转angle度。
(4)画笔控制命令
turtle.penup():抬笔
turtle.pendown():落笔
turtle.pensize(width):画笔粗细
turtle.pencolor(颜色名red/RGB三元组/颜色编码):画笔颜色
turtle.fillcolor(colorstring):绘制图形的填充颜色
turtle.begin_fill():开始填充
turtle.end_fill():结束填充
turtle.filling():返回当前是否在填充状态
(5)全局控制命令
turtle.clear():清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset():清空窗口,重置turtle状态为起始状态
turtle.undo():撤销上一个turtle动作
turtle.isvisible():返回当前turtle是否可见三 绘图举例
(1)小蟒蛇
1 import turtle 2 turtle.setup(650,350,200,200) 3 turtle.penup() 4 turtle.fd(-250) 5 turtle.pendown() 6 turtle.pensize(15) 7 turtle.pencolor("#00FF00") 8 turtle.seth(-40) 9 for i in range(4): 10 turtle.circle(40,80) 11 turtle.circle(-40,80) 12 turtle.circle(40,80/2) 13 turtle.fd(40) 14 turtle.circle(16,180) 15 turtle.fd(40*2/3) 16 turtle.done()
效果如图:
(2)玫瑰花
1 import turtle 2 3 # 设置初始位置 4 turtle.penup() 5 turtle.left(90) 6 turtle.fd(200) 7 turtle.pendown() 8 turtle.right(90) 9 10 # 花蕊 11 turtle.fillcolor("red") 12 turtle.begin_fill() 13 turtle.circle(10,180) 14 turtle.circle(25,110) 15 turtle.left(50) 16 turtle.circle(60,45) 17 turtle.circle(20,170) 18 turtle.right(24) 19 turtle.fd(30) 20 turtle.left(10) 21 turtle.circle(30,110) 22 turtle.fd(20) 23 turtle.left(40) 24 turtle.circle(90,70) 25 turtle.circle(30,150) 26 turtle.right(30) 27 turtle.fd(15) 28 turtle.circle(80,90) 29 turtle.left(15) 30 turtle.fd(45) 31 turtle.right(165) 32 turtle.fd(20) 33 turtle.left(155) 34 turtle.circle(150,80) 35 turtle.left(50) 36 turtle.circle(150,90) 37 turtle.end_fill() 38 39 # 花瓣1 40 turtle.left(150) 41 turtle.circle(-90,70) 42 turtle.left(20) 43 turtle.circle(75,105) 44 turtle.setheading(60) 45 turtle.circle(80,98) 46 turtle.circle(-90,40) 47 48 # 花瓣2 49 turtle.left(180) 50 turtle.circle(90,40) 51 turtle.circle(-80,98) 52 turtle.setheading(-83) 53 54 # 叶子1 55 turtle.fd(30) 56 turtle.left(90) 57 turtle.fd(25) 58 turtle.left(45) 59 turtle.fillcolor("green") 60 turtle.begin_fill() 61 turtle.circle(-80,90) 62 turtle.right(90) 63 turtle.circle(-80,90) 64 turtle.end_fill() 65 66 turtle.right(135) 67 turtle.fd(60) 68 turtle.left(180) 69 turtle.fd(85) 70 turtle.left(90) 71 turtle.fd(80) 72 73 # 叶子2 74 turtle.right(90) 75 turtle.right(45) 76 turtle.fillcolor("green") 77 turtle.begin_fill() 78 turtle.circle(80,90) 79 turtle.left(90) 80 turtle.circle(80,90) 81 turtle.end_fill() 82 83 turtle.left(135) 84 turtle.fd(60) 85 turtle.left(180) 86 turtle.fd(60) 87 turtle.right(90) 88 turtle.circle(200,60)
效果如图: