Python的turtle库是一个直观有趣的图形绘制函数库。
turtle库的语法元素包括:绘图坐标体系、画笔控制函数和形状绘制函数等。
turtle库绘制图形有一个基本框架:一个小海龟在坐标体系中爬行,其爬行轨迹形成了所绘制的图形。
刚开始绘制时,小海龟位于画布的正中央,此处坐标是(0,0),行进方向为水平向右。
turtle库的角度坐标体系是固定的:以正东方向为0度(及小海龟初始爬行方向),逆时针方向依次增大,顺时针方向为负,依次减小。这些角度不会因为小海龟的爬行方向而改变。
turtle.setup(width, height, startx, starty)
作用:设置画布的大小和位置
width、height:窗口的宽度、高度。如果值是整数,则表示像素值;如果值是小数,则表示与屏幕的宽度、高度的比例。
startx、starty:窗口左侧与屏幕左侧的像素距离、窗口顶部与屏幕顶部的像素距离。如果值是None,则表示居于该方向的正中央。
1、pensize():画笔的宽度。接收一个参数。
2、pencolor(): 没有参数传入,返回当前画笔颜色,传入参数则设置画笔颜色,参数可以是字符串如"green", “red”,也可以是RGB 3元组。
3、speed():设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快。
绘图命令的分类:运动命令、画笔控制命令、全局控制命令。
1、turtle.forward(distance): 向当前画笔方向移动distance像素长;
2、turtle.backward(distance): 向当前画笔相反方向移动distance像素长度;
3、turtle.right(degree): 顺时针移动degree°;
4、turtle.left(degree): 逆时针移动degree°;
5、turtle.pendown(): 移动时绘制图形,缺省时也为绘制;
6、turtle.goto(x,y): 将画笔移动到坐标为x,y的位置;
7、turtle.penup(): 移动时不绘制图形,提起笔,用于另起一个地方绘制时用;
8、turtle.speed(speed): 画笔绘制的速度范围[0,10]整数;
9、turtle.circle(raduis, extent,steps): 画圆。raduis表示圆的半径,半径为正(负),表示圆心在画笔的左边(右边)画圆。extent表示绘制弧形的角度,当不设置extend参数或extent=None时,表示绘制整个园。steps表示作半径为radius的圆的内切正steps边形。一般情况下不会同时设置extent和steps的值;
10、turtle.seth(to_angle): 改变画笔的绘制方向为to_angle,该角度是绝对方向的角度值,即正东方为0度。
1、turtle.pensize(width): 绘制图形时的宽度
2、turtle.pencolor(): 画笔颜色
3、turtle.fillcolor(colorstring): 绘制图形的填充颜色
4、turtle.color(color1, color2): 同时设置pencolor=color1, fillcolor=color2
5、turtle.filling(): 返回当前是否在填充状态
6、turtle.begin_fill(): 准备开始填充图形
7、turtle.end_fill(): 填充完成;
8、turtle.hideturtle(): 隐藏箭头显示;
9、turtle.showturtle(): 与hideturtle()函数对应
1、turtle.clear() 清空turtle窗口,但是turtle的位置和状态不会改变
2、turtle.reset() 清空窗口,重置turtle状态为起始状态
3、turtle.undo() 撤销上一个turtle动作
4、turtle.isvisible() 返回当前turtle是否可见
5、stamp() 复制当前图形
6、turtle.write(s[,font=(“font-name”,font_size,“font_type”)]) 写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项
1、pendown() =pd() =down():表示落下画笔;
2、penup() = pu() = up():表示提起画笔;
3、pensize(wid) = width(wid):表示画笔的宽度;
4、showturtle() = st():显示箭头;
5、hideturtle() = ht():隐藏箭头显示;
6、forward(distance) = fd(distance):向当前画笔方向移动distance像素长;
7、backward(distance) = bk(distance) = back(distance):向当前画笔相反方向移动distance像素长度;
8、right(angle) = rt(angle):顺时针移动degree°;
9、setheading(angle) = seth(angle):设置小海龟的当前朝向;
10、left(angle) = lt(angle):逆时针移动degree°。
import turtle
def drawSnake(rad, angle, len, neckrad):
for i in range(len):
if (i == 1):
turtle.pencolor("blue")
elif (i == 2):
turtle.pencolor("green")
elif (i == 3):
turtle.pencolor("yellow")
elif (i == 4):
turtle.pencolor("orange")
else:
turtle.pencolor("red")
turtle.circle(rad, angle)
turtle.circle(-rad, angle)
turtle.circle(rad, angle/2)
turtle.fd(rad)
turtle.circle(neckrad + 1, 180)
turtle.fd(rad * 2 / 3)
def main():
turtle.setup(1800, 800, 0, 0)
pythonsize = 15
turtle.pensize(pythonsize)
turtle.pencolor("purple")
turtle.seth(-40)
drawSnake(40, 80, 6, pythonsize / 2)
main()
import turtle
turtle.setup(800, 600, 200, 100)
mypensize = 20
turtle.pensize(mypensize)
colorstring = ("red", "orange", "yellow", "green", "lime", "blue", "purple", "white")
size = 0
for i in range(15):
if i <= 7:
turtle.pencolor(colorstring[i])
else:
turtle.pencolor(colorstring[15 - 1 - i])
turtle.seth(90)
turtle.circle(size)
turtle.seth(0)
turtle.penup()
turtle.fd(mypensize)
turtle.pendown()
size += mypensize
from turtle import *
setup(800, 800, None, 0)
pensize(1)
pencolor("magenta")
size = 3
for i in range(100):
seth(90 * (i + 1))
fd(size * (i + 1))
headturtle()
from turtle import *
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()