一、turtle库
1、turtle库是python计算机二级考试必选库。
2、turtle模块是Python的一个标准库。
3、使用画笔在画布上绘图,需要先了解 turtle的坐标体系。
4、turtle库绘图原理:有一只海龟在窗体正中心,初始坐标(0,0),面向x轴的正方向,通过程序控制海龟在画布上游走,走过的轨迹形成了绘制的图形,可以设置画布和海龟的颜色、方向宽度等各种属性。
5、官方文档:turtle --- 海龟绘图 — Python 3.8.18 文档
二、画布(TurtleScreen)
1、设置画布的大小和背景颜色
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
参数说明:
- canvwidth(可选):一个正整数,用于设置画布的宽度(以像素为单位)。如果不提供参数,画布宽度将默认为 400 像素。
- canvheight(可选):一个正整数,用于设置画布的高度(以像素为单位)。如果不提供参数,画布高度将默认为 300 像素。
- bg(可选):一个表示背景颜色的字符串,用于设置画布的背景色。如果不提供参数,背景颜色将默认为白色。
2、设置主窗口的大小和位置。
turtle.setup(width=_CFG["width"], height=_CFG["height"], startx=_CFG["leftright"], starty=_CFG["topbottom"])
参数说明:
- width -- 如为一个整型数值,表示大小为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 50%
- height -- 如为一个整型数值,表示高度为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 75%
- startx -- 如为正值,表示初始位置距离屏幕左边缘多少像素,负值表示距离右边缘,None 表示窗口水平居中
- starty -- 如为正值,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘,None 表示窗口垂直居中
三、画笔/海龟(Turtle)
1、海龟移动
1.1 海龟前进
turtle.forward(distance)
turtle.fd(distance)
参数:distance -- 一个数值 (整型或浮点型)
功能:海龟前进 distance 指定的距离,方向为海龟的朝向。
1.2 海龟后退
turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance)
参数:distance -- 一个数值
功能:海龟后退 distance 指定的距离,方向与海龟的朝向相反。不改变海龟的朝向。
1.3 海龟移动到指定坐标位置
turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None)
参数:
- x -- 一个数值或数值对/向量
- y -- 一个数值或 None
功能:海龟移动到一个绝对坐标。如果画笔已落下将会画线。不改变海龟的朝向。
注意:这个方法不会改变海龟的朝向,也就是说,无论海龟移动到哪里,它的方向都没有改变。
1.4 海龟沿着x轴移动
turtle.setx(x)
参数:x -- 一个数值 (整型或浮点型)
1.5 海龟沿着y轴移动
turtle.sety(y)
参数:y -- 一个数值 (整型或浮点型)
1.6 海龟移动到初始位置并恢复默认方向
turtle.home()
功能:海龟移至初始坐标 (0,0),并设置朝向为初始方向
2、海龟旋转
2.1 海龟右转
turtle.right(angle)
turtle.rt(angle)
参数:angle -- 一个数值 (整型或浮点型),角度的正负由海龟模式mode确定。
2.2 海龟左转
turtle.left(angle)
turtle.lt(angle)
参数:angle -- 一个数值 (整型或浮点型),角度的正负由海龟模式mode确定。
3、设置海龟模式
turtle.mode(mode=None)
参数:mode -- 字符串 "standard", "logo" 或 "world" 其中之一
功能:设置或者查询当前的海龟模式,如未指定模式则返回当前的模式。
模式 | 初始海龟朝向 | 正数角度 |
---|---|---|
"standard" | 朝右 (东) | 逆时针 |
"logo" | 朝上 (北) | 顺时针 |
注意:turtle模块默认的模式是“standard”。
4、设置海龟朝向角度
turtle.setheading(to_angle)
turtle.seth(to_angle)
参数:to_angle -- 一个数值 (整型或浮点型),设置海龟的朝向为 to_angle。
以下是以角度表示的几个常用方向:
标准模式 | logo 模式 |
---|---|
0 - 东 | 0 - 北 |
90 - 北 | 90 - 东 |
180 - 西 | 180 - 南 |
270 - 南 | 270 - 西 |
5、控制画笔状态
5.1 画笔落下 -- 移动时将画线。
turtle.pendown()
turtle.pd()
turtle.down()
5.2 画笔抬起 -- 移动时不画线。
turtle.penup()
turtle.pu()
turtle.up()
6、设置画笔宽度
turtle.pensize(width=None)
turtle.width(width=None)
7、设置画笔颜色
turtle.pencolor(*args)
turtle.pencolor(*args) 是 turtle 模块中用于设置画笔颜色的方法。它可以接受不同类型的参数来指定颜色,包括字符串、RGB元组或者RGB值。
具体来说,*args 表示可以传入一个或多个参数,即允许多种方式来指定颜色,如下:
-
字符串参数: 传入一个Tk 颜色描述字符串,例如 "red"、"blue"、"green" 等,表示设置画笔颜色为指定的颜色。
-
RGB元组参数: 传入一个包含RGB颜色值的元组,例如 (0.5, 0.5, 0.5),每个数值范围在0-1之间,表示设置画笔颜色为指定的RGB颜色。
-
整数参数: 传入三个整数作为参数,例如 pencolor(255, 0, 0),表示设置画笔颜色为指定的RGB颜色,每个数值的取值范围在0-255之间。
8、设置填充颜色
8.1 设置填充颜色
turtle.fillcolor(*args)
功能:返回或设置填充颜色,设置填充颜色的方法跟设置画笔颜色的方法一致。
8.2 开始填充
turtle.begin_fill()
8.3 结束填充
turtle.end_fill()
下面是一个简单示例,绘制一个正方向,填充颜色为红色。
9、设置海龟状态
9.1 隐藏海龟(可显著加快绘制速度)
turtle.hideturtle()
turtle.ht()
9.2 显示海龟
turtle.showturtle()
turtle.st()
10、保持绘图窗口
turtle.done()
turtle.done() 方法是一个用于显示绘图的窗口并进入主循环的函数。它通常用于展示通过turtle模块绘制的图形,并保持图形窗口打开,直到用户关闭窗口。
11、绘制圆/正多边形
turtle.circle(radius, extent=None, steps=None)
radius -- 圆的半径,圆心在海龟左边 radius 个单位。如果半径为正值,则海龟从圆的左侧开始绘制;如果半径为负值,则海龟从圆的右侧开始绘制。
extent -- 绘制圆的部分弧度,默认为None(表示绘制整个圆)。如果指定了这个参数,它应该是一个数字,表示以角度为单位的 "绘制弧度",即要绘制的圆的一部分。正值表示逆时针方向,负值表示顺时针方向。
steps -- 如果指定了这个参数,应该是一个整数。它表示将圆分成多少段来绘制。较大的值会导致更接近于真实圆形的绘制,但较小的值会更快。
四、绘图实例
1、绘制一个爱心
# 爱心
import turtle
turtle.fillcolor('red')
turtle.begin_fill()
turtle.left(40)
turtle.forward(100)
turtle.circle(50,210)
turtle.right(135)
turtle.circle(50,210)
turtle.forward(100)
turtle.end_fill()
reference: