这篇文章主要介绍了pythonturtle库函数用法在哪里查,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。
海龟绘图:
turtle官方文档
turtle常用语法介绍
- 概述
- turtle方法
- 海龟动作
- 移动和绘制
- 获取海龟的状态
- 设置与度量单位
- 画笔控制
- 绘图控制
- 颜色控制
- 填充
- 更多绘图控制
- 海龟状态
- 可见性
- 外观
- 使用事件
- 特殊海龟方法
- TurtleScreen/Screen 方法
- 窗口控制
- 动画控制
- 使用屏幕事件
- 设置与特殊方法
- 输入方法
- Screen专用方法
- Turtle方法和对应的函数
- 海龟动作
- 获取海龟状态
- 度量单位设置
- 画笔控制
- 颜色控制
- 获取海龟状态
- 三级目录
概述
海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言Python中的所有运算符号。
请想象绘图区有一只机器海龟,起始位置在 x-y 平面的 (0, 0) 点。先执行 import turtle,再执行 turtle.forward(15),它将(在屏幕上)朝所面对的 x 轴正方向前进 15 像素,随着它的移动画出一条线段。再执行 turtle.right(25),它将原地右转 25 度。
使用海龟绘图可以编写重复执行简单动作的程序画出精细复杂的形状。
通过组合使用此类命令,可以轻松地绘制出精美的形状和图案。
turtle 模块是基于 Python 标准发行版 2.5 以来的同名模块重新编写并进行了功能扩展。
新模块尽量保持了原模块的特点,并且(几乎)100%与其兼容。这就意味着初学编程者能够以交互方式使用模块的所有命令、类和方法——运行 IDLE 时注意加 -n 参数。
turtle 模块提供面向对象和面向过程两种形式的海龟绘图基本组件。由于它使用 tkinter 实现基本图形界面,因此需要安装了 Tk 支持的 Python 版本。
turtle方法
海龟动作
移动和绘制
forward() | fd() 前进
backward() | bk() | back() 后退
right() | rt() 右转
left() | lt() 左转
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() 画笔落下
penup() | pu() | up() 画笔抬起
pensize() | width() 画笔粗细
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() 倾斜
shapetransform() 变形
get_shapepoly() 获取形状多边形
使用事件
onclick() 当鼠标点击
onrelease() 当鼠标释放
ondrag() 当鼠标拖动
特殊海龟方法
begin_poly() 开始记录多边形
end_poly() 结束记录多边形
get_poly() 获取多边形
clone() 克隆
getturtle() | getpen() 获取海龟画笔
getscreen() 获取屏幕
setundobuffer() 设置撤消缓冲区
undobufferentries() 撤消缓冲区条目数
TurtleScreen/Screen 方法
窗口控制
bgcolor() 背景颜色
bgpic() 背景图片
clear() | clearscreen() 清屏
reset() | resetscreen() 重置
screensize() 屏幕大小
setworldcoordinates() 设置世界坐标系
动画控制
delay() 延迟
tracer() 追踪
update() 更新
使用屏幕事件
listen() 监听
onkey() | onkeyrelease() 当键盘按下并释放
onkeypress() 当键盘按下
onclick() | onscreenclick() 当点击屏幕
ontimer() 当达到定时
mainloop() | done() 主循环
设置与特殊方法
mode() 模式
colormode() 颜色模式
getcanvas() 获取画布
getshapes() 获取形状
register_shape() | addshape() 添加形状
turtles() 所有海龟
window_height() 窗口高度
window_width() 窗口宽度
输入方法
textinput() 文本输入
numinput() 数字输入
Screen专用方法
bye() 退出
exitonclick() 当点击时退出
setup() 设置
title() 标题
Turtle方法和对应的函数
海龟动作
前进
turtle.forward(ditance)
turtle.fd(distance)
海龟前进 distance 指定的距离,方向为海龟的朝向.
>>> turtle.position()
(0.00,0.00)
>>> turtle.forward(25)
>>> turtle.position()
(25.00,0.00)
>>> turtle.forward(-75)
>>> turtle.position()
(-50.00,0.00)
后退
海龟后退 distance 指定的距离,方向与海龟的朝向相反。不改变海龟的朝向。
turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance)
>>> turtle.position()
(0.00,0.00)
>>> turtle.backward(30)
>>> turtle.position()
(-30.00,0.00)
左转
turtle.right(angle)
turtle.rt(angle)
海龟右转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。) 角度的正负由海龟模式确定,参见 mode()。
>>> turtle.heading()
22.0
>>> turtle.right(45)
>>> turtle.heading()
337.0
右转
turtle.left(angle)
turtle.lt(angle)
海龟左转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。) 角度的正负由海龟模式确定,参见 mode()。
>>> turtle.heading()
22.0
>>> turtle.left(45)
>>> turtle.heading()
67.0
定点移动
turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None)
如果 y 为 None,x 应为一个表示坐标的数值对或 Vec2D 类对象 (例如 pos() 返回的对象).
海龟移动到一个绝对坐标。如果画笔已落下将会画线。不改变海龟的朝向。
>>> tp = turtle.pos()
>>> tp
(0.00,0.00)
>>> turtle.setpos(60,30)
>>> turtle.pos()
(60.00,30.00)
>>> turtle.setpos((20,80))
>>> turtle.pos()
(20.00,80.00)
>>> turtle.setpos(tp)
>>> turtle.pos()
(0.00,0.00)
设置横坐标
设置海龟的横坐标为 x,纵坐标保持不变。
turtle.setx(x)
>>> turtle.position()
(0.00,240.00)
>>> turtle.setx(10)
>>> turtle.position()
(10.00,240.00)
设置纵坐标
设置海龟的纵坐标为 y,横坐标保持不变。
turtle.sety(y)
>>> turtle.position()
(0.00,40.00)
>>> turtle.sety(-10)
>>> turtle.position()
(0.00,-10.00)
设置海龟的角度
设置海龟的朝向为 to_angle。以下是以角度表示的几个常用方向:
turtle.setheading(to_angle)
turtle.seth(to_angle)¶
>>> turtle.setheading(90)
>>> turtle.heading()
90.0
海龟回家
海龟移至初始坐标 (0,0),并设置朝向为初始方向 (由海龟模式确定,参见 mode())。
turtle.home()
>>> turtle.heading()
90.0
>>> turtle.position()
(0.00,-10.00)
>>> turtle.home()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
海龟画圆
绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。
圆实际是以其内切正多边形来近似表示的,其边的数量由 steps 指定。如果未指定边数则会自动确定。此方法也可用来绘制正多边形。
turtle.circle(radius, extent=None, steps=None)
radius – 一个数值
extent – 一个数值 (或 None)
steps – 一个整型数 (或 None)
>>> turtle.home()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
>>> turtle.circle(50)
>>> turtle.position()
(-0.00,0.00)
>>> turtle.heading()
0.0
>>> turtle.circle(120, 180) # draw a semicircle
>>> turtle.position()
(0.00,240.00)
>>> turtle.heading()
180.0
海龟画点
绘制一个直径为 size,颜色为 color 的圆点。如果 size 未指定,则直径取 pensize+4 和 2*pensize 中的较大值。
turtle.dot(size=None, *color)
size – 一个整型数 >= 1 (如果指定)
color – 一个颜色字符串或颜色数值元组
>>> turtle.home()
>>> turtle.dot()
>>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50)
>>> turtle.position()
(100.00,-0.00)
>>> turtle.heading()
0.0
海龟印章
在海龟当前位置印制一个海龟形状。返回该印章的 stamp_id,印章可以通过调用 clearstamp(stamp_id) 来删除。
turtle.stamp()
>>> turtle.color("blue")
>>> turtle.stamp()
11
>>> turtle.fd(50)
海龟清除印章
turtle.clearstamp(stampid)
#stampid -- 一个整型数,必须是之前 stamp() 调用的返回值
删除 stampid 指定的印章。
>>> turtle.position()
(150.00,-0.00)
>>> turtle.color("blue")
>>> astamp = turtle.stamp()
>>> turtle.fd(50)
>>> turtle.position()
(200.00,-0.00)
>>> turtle.clearstamp(astamp)
>>> turtle.position()
(200.00,-0.00)
turtle.clearstamps(n=None)
#n -- 一个整型数 (或 None)
删除全部或前/后 n 个海龟印章。如果 n 为 None 则删除全部印章,如果 n > 0 则删除前 n 个印章,否则如果 n < 0 则删除后 n 个印章。
>>> for i in range(8):
... turtle.stamp(); turtle.fd(30)
13
14
15
16
17
18
19
20
>>> turtle.clearstamps(2)
>>> turtle.clearstamps(-2)
>>> turtle.clearstamps()
撤销海龟动作
turtle.undo()
撤消 (或连续撤消) 最近的一个 (或多个) 海龟动作。可撤消的次数由撤消缓冲区的大小决定。
>>> for i in range(4):
... turtle.fd(50); turtle.lt(80)
...
>>> for i in range(8):
... turtle.undo()
控制海龟速度
turtle.speed(speed=None)
#speed -- 一个 0..10 范围内的整型数或速度字符串 (见下)
设置海龟移动的速度为 0…10 表示的整型数值。如未指定参数则返回当前速度。
如果输入数值大于 10 或小于 0.5 则速度设为 0。速度字符串与速度值的对应关系如下:
“fastest”: 0 最快
“fast”: 10 快
“normal”: 6 正常
“slow”: 3 慢
“slowest”: 1 最慢
速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。
注意: speed = 0 表示 没有 动画效果。forward/back 将使海龟向前/向后跳跃,同样的 left/right 将使海龟立即改变朝向。
>>> turtle.speed()
3
>>> turtle.speed('normal')
>>> turtle.speed()
6
>>> turtle.speed(9)
>>> turtle.speed()
9
获取海龟状态
海龟当前位置
turtle.position()
turtle.pos()¶
返回海龟当前的坐标 (x,y) (为 Vec2D 矢量类对象)。
>>> turtle.pos()
(440.00,-0.00)
求海龟与设定位置之间的夹角
turtle.towards(x, y=None)¶
#x -- 一个数值或数值对/矢量,或一个海龟实例
#y -- 一个数值——如果 x 是一个数值,否则为 None
从海龟位置到由 (x,y),矢量或另一海龟对应位置的连线的夹角。此数值依赖于海龟初始朝向 - 由 “standard”/“world” 或 “logo” 模式设置所决定)。
>>> turtle.goto(10, 10)
>>> turtle.towards(0,0)
225.0
返回海龟当前x轴的坐标
turtle.xcor()
>>> turtle.home()
>>> turtle.left(50)
>>> turtle.forward(100)
>>> turtle.pos()
(64.28,76.60)
>>> print(round(turtle.xcor(), 5))
64.27876
返回海龟当前y轴的坐标
turtle.ycor()
>>> turtle.home()
>>> turtle.left(60)
>>> turtle.forward(100)
>>> print(turtle.pos())
(50.00,86.60)
>>> print(round(turtle.ycor(), 5))
86.60254
返回海龟当前的朝向
turtle.heading()
>>> turtle.home()
>>> turtle.left(67)
>>> turtle.heading()
67.0
返回当前与给定点之间的绝对距离
turtle.distance(x,y)
#x -- 一个数值或数值对/矢量,或一个海龟实例
#y -- 一个数值——如果 x 是一个数值,否则为 None
>>> turtle.home()
>>> turtle.distance(30,40)
50.0
>>> turtle.distance((30,40))
50.0
>>> joe = Turtle()
>>> joe.forward(77)
>>> turtle.distance(joe)
77.0
度量单位设置
设置角度的度量单位
turtle.degrees(fullcircle=360.0)
设置角度的度量单位,即设置一个圆周为多少 “度”。默认值为 360 度。在这里插入代码片
>>> turtle.home()
>>> turtle.left(90)
>>> turtle.heading()
90.0
Change angle measurement unit to grad (also known as gon,
grade, or gradian and equals 1/100-th of the right angle.)
>>> turtle.degrees(400.0)
>>> turtle.heading()
100.0
>>> turtle.degrees(360)
>>> turtle.heading()
90.0
设置角度为弧度
turtle.radians()
设置角度的度量单位为弧度。其值等于 degrees(2*math.pi)。
>>> turtle.home()
>>> turtle.left(90)
>>> turtle.heading()
90.0
>>> turtle.radians()
>>> turtle.heading()
1.5707963267948966
画笔控制
绘图状态
#抬笔
turtle.penup()
turtle.pu()
turtle.up()
#落笔
turtle.pendown()
turtle.pd()
turtle.down()
#画笔粗细
turtle.pensize(width=None)¶
turtle.width(width=None)
画笔设置
turtle.pen(pen=None, **pendict)
#pen -- 一个包含部分或全部下列键的字典
#pendict -- 一个或多个以下列键为关键字的关键字参数
返回或设置画笔的属性,以一个包含以下键值对的 “画笔字典” 表示:
“shown”: True/False
“pendown”: True/False
“pencolor”: 颜色字符串或颜色元组
“fillcolor”: 颜色字符串或颜色元组
“pensize”: 正数值
“speed”: 0…10 范围内的数值
“resizemode”: “auto” 或 “user” 或 “noresize”
“stretchfactor”: (正数值, 正数值)
“outline”: 正数值
“tilt”: 数值
此字典可作为后续调用 pen() 时的参数,以恢复之前的画笔状态。另外还可将这些属性作为关键词参数提交。使用此方式可以用一条语句设置画笔的多个属性。
>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)
>>> sorted(turtle.pen().items())
[('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),
('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),
('shearfactor', 0.0), ('shown', True), ('speed', 9),
('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]
>>> penstate=turtle.pen()
>>> turtle.color("yellow", "")
>>> turtle.penup()
>>> sorted(turtle.pen().items())[:3]
[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]
>>> turtle.pen(penstate, fillcolor="green")
>>> sorted(turtle.pen().items())[:3]
[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]
画笔是否落下turtle.isdown()
颜色控制
获取海龟状态
三级目录