注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。
turtle库基本介绍
turtle库,1969年诞生,被Python语言借鉴,是Python的标准库。
turtle名称含义为“海龟”,我们想象一只海龟,位于显示器上窗体的正中心,在画布上游走,它游走的轨迹就形成了绘制的图形。海龟的运动是由程序控制的,它可以变换颜色,改变尺寸、大小等。利用turtle可以制作很多复杂的绘图。
turtle库绘图窗体布局
turtle.setup(width, height[, startx, starty])
setup()设置窗体大小及位置。width, height分别是窗体本身的宽度和高度,如下图所示。startx, starty是可选参数。
turtle空间坐标体系
turtle绝对角度坐标体系
$turtle.seth(angle)$
用来改变海龟行进方向,参数angle为绝对角度(角度制的度数值,不带°号)。
用turtle.right(angle)和turtle.left(angle)来改变turtle行进的方向角度。
某个turtle绘图示例如下:
import turtle
turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)
RGB色彩体系
RGB由三种颜色构成的万物色。
- RGB指红蓝绿三个通道的颜色组合。
- 覆盖视力所能感知的所有颜色。
- RGB每色取值范围是0255整数,或01小数。
turtle默认使用RGB的小数值改变颜色,turtle.colormode(mode)
- 1.0:RGB小数值模式。
- 255:RGB整数值模式。
拿紫色的RGB整数值模式(160, 32, 240)做例子,将其每个颜色数值除以255,保留两位小数,就能得到其RGB小数值模式(160/255, 32/255, 240/255),即(0.63, 0.13, 0.94)。
turtle画笔控制函数
画笔操作后一直有效,一般成对出现。
-turtle.penup(),别名turtle.pu()。
抬起画笔,海龟在飞行。这时的轨迹不在画布上形成痕迹。
-turtle.pendown(),别名turtle.pd()。
落下画笔,海龟在爬行。这时的轨迹在画布上形成痕迹。
turtle.pu()和turtle.pd()是成对出现的。
-turtle.pensize(width) 别名 turtle.width(width)。
画笔宽度,海龟的腰围。
-turtle.pencolor(color),color为颜色字符串或RGB值。
画笔颜色,海龟在涂装。
pencolor(color)的color参数可以有三种形式:
- 颜色字符串:-turtle.pencolor("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, extend=None),走曲线
根据半径r绘制extent角度的弧形。r是默认圆心在海龟左侧r距离的位置。extent是绘制角度,默认是360°即整圆;当extent为正数时,圆从turtle当前位置逆时针方向(即顺象限方向)画圆心角为|extent|角度(角度制)的弧形;当extent为负数时,圆从turtle当前位置顺时针方向(即逆象限方向)画圆心角为|extent|角度(角度制)的弧形。
turtle方向控制函数
控制海龟面对方向:绝对角度&海龟角度
-turtle.setheading(angle) 别名turtle.seth(angle)——绝对角度
改变行进方向,海龟走的绝对角度。angle:改变行进方向的绝对角度。
-turtle.left(angle), turtle.right(angle)
改变行进方向,海龟走的海龟角度。angle:改变行进方向的海龟角度。
“Python蟒蛇绘制”代码实例
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done() # 用来保持程序的图象存在。若没有这行,程序运行完成后会自动退出。
turtle.done() 用来停止画笔绘制,但绘图窗体不关闭。
To be continued.