概述
turtle库绘制图是一个直观有趣的图形绘制函数库。turtle图形绘制非常成功用于LOGO编程语言,python接受turtle库这个概念,形成了一个python的turtle库。在python中海龟绘图提供了一个实体“海龟形象”(带有画笔的小机器动物),假定它在地板上平铺的纸张上画线。
绘制坐标体系
刚开始绘制时,小海龟在坐标系中爬行,其爬行轨迹成了绘制图形。刚开始绘制时,小海龟位于画布的正中央,此时坐标为(0,0),行进方向为水平右方。
python turtle库绘画坐标体系
turtle.setup(width,height,startx,starty)
作用:主窗口的大小和位置。
width:
窗口宽度,if整数表示像数值;if 是小数,表示窗口宽度与屏幕的比例
height:
窗口高度,if整数表示像数值;if 是小数,表示窗口高度与屏幕的比例
startx:
窗口左侧与屏幕左侧的像素距离,如果值是None,窗口位于屏幕水平中央
starty:
窗口顶部与屏幕顶端的像素距离;if 值是None,窗口位于屏幕垂直中央
启动海龟环境
在 Python shell 中,导入 turtle
模块的所有对象:
from turtle import *
如果你遇到了 No module named '_tkinter'
错误,则需要在你的系统中安装 Tk 接口包。
通过保留字import引用海龟函数库
import turtle
引用库函数
第一种引用库函数的方式
import<库名>
此时,程序可以调用库名中所有的函数,格式为:
<库名>.<函数名>.(<函数参数>)
<a>.<b>()是python编程的一种典型表达形式,它可以表现调用一个对像<a>的方法<b>(),也可以表示调用一个函数库<a>中的函数<b>()。
第二种引用函数库的方法
form<库名>import*
#*是通配符,表示所有的函数
此时调用库函数不再需要使用库名,直接使用
<函数名>(<函数参数>)
使用 from turtle import *
是很方便 —— 但要注意它导入的对象集相当大,如果你还在做海龟绘图以外的事情就有发生名称冲突的风险(如果你在可能导入了其他模块的脚本中使用海龟绘图则可能会遇到更大的问题)。
解决办法是使用 import turtle
—— fd()
将变成 turtle.fd()
,width()
将变成 turtle.width()
等等。 (如果反复输入“turtle”太过烦琐,还可以改成 import turtle as t
等。)
基本绘图
1.turtle.penup()和tuetle.pendown()函数
turtle.penup()
turtle.pendown()
turtle.penup()
别名:turtle.pu(),turtle.up()
作用:抬起画笔,之后移动画笔不绘制形状。
参数:无
1.turtle.pendown()
别名:turtle.pd(),turtle.down()
作用:落下画笔之后移动画笔将绘制形状。
参数:无
2.turtle.pensize()函数
turtle.pensize(25) 用来设置画笔尺寸,
turtle.pensize(width)
别名
turtle.width()
作用:设置画笔宽度,当无参数输入时返回当前画笔宽度。
参数如下:设置的画笔线条宽度,如果为None或者为空,则函数返回当前画笔宽度。
3.turtle.pencolor()函数
turtle.pencolor("purple")
turtle.pencolor(colorstring)或turtle.pencolor((r,g,b))
作用:设置画笔颜色,当无参数时输入时返回当前颜色。
colorstring:表示颜色的字符串,"purple","red","blue"
(r,g,b):颜色对应RGB的数字,(51,104,140)
4.turtle.fd()函数
turtle.fd(-250)
turtle.fd(40)
turtle.fd(40*2/3)
turtle.fd(distance)
别名turtle.forward(distance)
作用:向小海龟当前行进方向前进distance距离
5.turtle.seth()函数
turtle.seth(-40)
turtle.seth(to_angle)
别名turtle.setheading(to_angle)
海龟的位置
将海龟送回起点
(这适用于海龟消失在屏幕之外的情况):
home()
初始位置在海龟屏幕的中心。 如果你需要知道具体数值,可以这样获取海龟的 x-y 坐标:
pos()
初始点在 (0, 0)
。
过一段时间后,也许可以考虑清空窗口这样我们就可以重新开始:
clearscreen()
我们想要用红色线条,黄色填充:
color('red')
fillcolor('yellow')
就像用 up()
和 down()
决定是否画线一样,填充也可以打开或关闭:
begin_fill()
接下来我们将创建一个循环:
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
abs(pos()) < 1
是确定海龟何时回到初始点的好办法。
最后,完成填充:
end_fill()
(请注意只有在你给出 end_fill()
命令时才会实际进行填充。)接下来我们将创建一个循环:
最后,完成填充:
end_fill()
(请注意只有在你给出 end_fill()
命令时才会实际进行填充。)
海龟绘图参考
Turtle 方法
海龟动作
移动和绘制
backward() | bk() | back() 后退
goto() | setpos() | setposition() 前往/定位
setx() 设置x坐标
sety() 设置y坐标
setheading() | seth() 设置朝向
home() 返回原点
circle() 画圆
dot() 画点
stamp() 印章
clearstamp() 清除印章
clearstamps() 清除多个印章
undo() 撤消
speed() 速度
获取海龟的状态
position() | pos() 位置
towards() 目标方向
xcor() x坐标
ycor() y坐标
heading() 朝向
distance() 距离
设置与度量单位
degrees() 角度
radians() 弧度
画笔控制
绘图状态
pendown() | pd() | down() 画笔落下
pen() 画笔
isdown() 画笔是否落下
颜色控制
color() 颜色
pencolor() 画笔颜色
fillcolor() 填充颜色
填充
filling() 是否填充
begin_fill() 开始填充
end_fill() 结束填充
更多绘图控制
reset() 重置
clear() 清空
write() 书写
海龟状态
可见性
showturtle() | st() 显示海龟
hideturtle() | ht() 隐藏海龟
isvisible() 是否可见
外观
shape() 形状
resizemode() 大小调整模式
shapesize() | turtlesize() 形状大小
shearfactor() 剪切因子
settiltangle() 设置倾角
tiltangle() 倾角
tilt() 倾斜
get_shapepoly() 获取形状多边形
使用事件
onclick() 当鼠标点击
onrelease() 当鼠标释放
ondrag() 当鼠标拖动
特殊海龟方法
begin_poly() 开始记录多边形
end_poly() 结束记录多边形
get_poly() 获取多边形
clone() 克隆
getturtle() | getpen() 获取海龟画笔
getscreen() 获取屏幕
setundobuffer() 设置撤消缓冲区
undobufferentries() 撤消缓冲区条目数
TurtleScreen/Screen 方法
窗口控制
bgcolor() 背景颜色
bgpic() 背景图片
screensize() 屏幕大小
setworldcoordinates() 设置世界坐标系
动画控制
delay() 延迟
tracer() 追踪
update() 更新
使用屏幕事件
listen() 监听
onkey() | onkeyrelease() 当键盘按下并释放
onkeypress() 当键盘按下
onclick() | onscreenclick() 当点击屏幕
ontimer() 当达到定时
mainloop() | done() 主循环
设置与特殊方法
colormode() 颜色模式
getcanvas() 获取画布
getshapes() 获取形状
register_shape() | addshape() 添加形状
turtles() 所有海龟
window_height() 窗口高度
window_width() 窗口宽度
输入方法
textinput() 文本输入
numinput() 数字输入
Screen 专有方法
bye() 退出
exitonclick() 当点击时退出
setup() 设置
title() 标题