turtle库
turtle库是海龟体系在python语言的功能的实现
turtle库包含近百个功能函数,主要的函数有:
绘制状态函数:pendown(),penup(), pensize(), 对应的别名为pd(), pu(), width()
颜色控制函数:color(), pencolor(), begin_fill(), end_fill()
运动控制函数:forward(), backward(), right(), left(), setheading(), goto(), circle(),对应的别名为fd(), bk(), rt(), lt(), seth()
turtle.pendown() 别名turtle.pd()
落下画笔,之后,移动画笔将绘制形状
turtle.penup() 别名turtle.pu()
抬起画笔,之后,移动画笔不会只形状
turtle.pensize(widthh) 别名turtle.width(width)
设置画笔宽度,当无参数输入时返回当前画笔宽度
width:设置的画笔线条宽度,如果为None或者为空,则返回当前画笔宽度
turtle.color()
turtle.color(colorstring) 或者 turtle.color((r, g, b)) 或者 turtle.color(r, g, b) 或者 turtle.color(colorstr1, colorstr2) 或者 turtle.color((r1, g1, b1), (r2, g2, b2))
返回或设置画笔及背景颜色,当无参数输入时返回当前画笔及背景颜色
colorstring:表示颜色的字符串。例如"purple", "red", "blue"等
(r, g, b):颜色对应的RGB的01数值,例如:1,0.65,0
直接使用turtle.color()函数,返回一个二元组,例如("purple", "red")分别对应画笔颜色和背景颜色
使用单参数turtle.color(colorstring)函数,同时设置画笔和背景颜色为colorstring对应的色彩
使用双参数turtle.color(colorstr1, colorstr2)函数,分别设置画笔和背景颜色为colorstr1和colorstr2对应的颜色
turtle.pencolor(colorstring) 或者 turtle.pencolor((r, g, b)) 或者 turtle.pencolor(r, g, b)
返回或设置画笔颜色,当无参数输入时返回当前画笔颜色
colorstring:表示颜色的字符串。例如"purple", "red", "blue"等
(r, g, b):颜色对应的RGB的01数值,例如:1,0.65,0
与turtle.color()函数不同,turtle.pencolor(colorstring)函数仅用于返回或设置画笔函数,对于没有背景填充需要的应用,使用该函数更为合理
turtle.begin_fill()
在绘制带有填充色彩图形之前调用,表示填充开始
turtle.end_fill()
在绘制带有填充色彩图形之后调用,表示填充结束
turtle.forward(distance) 别名 turtle.fd(distance)
向画笔当前行进方向前进distance距离
distance:行进距离的像素值。当值为负数时,表示相反方向前进
turtle.backward(distance) 别名 turtle.bk()
向当前画笔行进反方向行进distance距离
distance:行进距离的像素值。当值为负数时,表示相反方向前进
turtle.backward(distance)函数不改变画笔方向,相当于后退着行进
turtle.right(angle) 别名 turtle.rt(angle)
以当前行进角度为原点,行进方向向右改变相对应的角度值angle
angle:角度的整数值
turtle.right(angle) 别名 turtle.rt(angle)
以当前行进角度为原点,行进方向向左改变相对应的角度值angle
angle:角度的整数值
turtle.setheading(to_angle) 别名 turtle.seth(to_angle)
设置画笔当前行进方向的角度为to_rangle,该角度是绝对方向角度值
to_angle:角度地整数值
如图是turtle库的角度体系,供turtle.seth()函数使用、turtle库的角度坐标体系以正东方为绝对0°,这也是画笔的初始方向,正西方为绝对180°/-180º,正北方向-90º/270º,正南方向90º/-270º
这个方向坐标体系是方向的绝对方向体系,与画笔当前方向无关
turtle.goto(x, y)
将画笔移动到绝对位置(x, y)处
x:位置坐标系的绝对横坐标
y:位置坐标系的绝对纵坐标
参考上面的图,画笔初始位置在画布正中心,坐标为(0,0),其中,绝对0°方向为x正方向,绝对90°方向为y正方向,在此基础上构建坐标系,表示绝对位置
turtle.circle(radius, extent = None)
根据半径radius绘制extent角度的弧形
radius:弧形半径,当值为正数时,半径在画笔左侧。值为负数时,半径在画笔右侧。
extent:绘制弧形的角度。当不给该参数或该参数为None时,绘制整个圆形
如下实例,
from turtle import * from time import sleep def go_to(x, y): up() goto(x, y) down() def big_Circle(size): #函数用于绘制心的大圆 speed(1) for i in range(150): forward(size) right(0.3) def small_Circle(size): #函数用于绘制心的小圆 speed(1) for i in range(210): forward(size) right(0.786) def line(size): speed(1) forward(51*size) def heart( x, y, size): go_to(x, y) left(150) begin_fill() line(size) big_Circle(size) small_Circle(size) left(120) small_Circle(size) big_Circle(size) line(size) end_fill() def arrow(): pensize(10) setheading(0) go_to(-400, 0) left(15) forward(150) go_to(339, 178) forward(150) def arrowHead(): pensize(1) speed(1) color('red', 'red') begin_fill() left(120) forward(20) right(150) forward(35) right(120) forward(35) right(150) forward(20) end_fill() def main(): pensize(2) color('red', 'pink') #getscreen().tracer(30, 0) #取消注释后,快速显示图案 heart(200, 0, 1) #画出第一颗心,前面两个参数控制心的位置,函数最后一个参数可控制心的大小 setheading(0) #使画笔的方向朝向x轴正方向 heart(-80, -100, 1.5) #画出第二颗心 arrow() #画出穿过两颗心的直线 arrowHead() #画出箭的箭头 go_to(400, -300) write("author:pywjh", move=True, align="left", font=("宋体", 30, "normal")) done() main()