【函数表格整理在最下方】
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
官方文档网址
turtle
绘图窗口
![\g)]](https://img-blog.csdnimg.cn/1d04856b5c7346a99024452ed253a637.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_20,color_FFFFFF,t_70,g_se,x_16)
turtle.setup(width, height, startx, starty)
参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
- setup设置窗体大小和位置
- 4个参数中后两个可选(默认居中)
- setup()不是必须的
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
参数分别为画布的宽(单位像素), 高, 背景颜色。
如:turtle.screensize(800,600, “green”)
turtle.screensize() #返回默认大小(400, 300)
空间坐标体系
绝对坐标
![[)]](https://img-blog.csdnimg.cn/c4fb802d59774d578853253ed9908cae.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_16,color_FFFFFF,t_70,g_se,x_16)
【demo】
import turtle
turtle.goto(100, 100)
turtle.goto(100, -100)
turtle.goto(-100, -100)
turtle.goto(-100, 100)
turtle.goto(0, 0)
![[]](https://img-blog.csdnimg.cn/3ac3c701110d4d07bec4a955d3645fa5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_12,color_FFFFFF,t_70,g_se,x_16)
海龟坐标
![[)]](https://img-blog.csdnimg.cn/371b7555ce3746a78e92b8a385c132a7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_11,color_FFFFFF,t_70,g_se,x_16)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HIs9TdaP-1633154999063)(C:\Users\Joy Zhang\AppData\Roaming\Typora\typora-user-images\image-20211002134938669.png)]](https://img-blog.csdnimg.cn/2ceca75a645940ee8614596fa7624f33.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_18,color_FFFFFF,t_70,g_se,x_16)
turtle.fd(d)
turtle.bk(d)
turtle.circle(r, angle)(以海龟为中心,向左转)
角度坐标体系
绝对角度
![]](https://img-blog.csdnimg.cn/372c5f403aa74f3d8fd7476236ca4c89.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_16,color_FFFFFF,t_70,g_se,x_16)
turtle.seth(angle)
- seth()改变海龟行进方向
- seth()只改变方向不行进
- angle 绝对度数
在这样基础上,继续turtle.fd(d)
海龟角度
![[)]](https://img-blog.csdnimg.cn/71ca62e741f54d3c93e8a572321717da.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_20,color_FFFFFF,t_70,g_se,x_16)
turtle.left(angle)
turtle.right(angle)
【demo】
import turtle
turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)
turtle.done()
![[)]](https://img-blog.csdnimg.cn/f955f34e5313419daef5a951d3692e4e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_12,color_FFFFFF,t_70,g_se,x_16)
RGB色彩体系
每色取值范围0-255整数或者0-1小数。
![[]](https://img-blog.csdnimg.cn/f331be9d476c4d169916ed8b248125a0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_20,color_FFFFFF,t_70,g_se,x_16)
![[]](https://img-blog.csdnimg.cn/3ed48bef323849298dfe6c255f90a7cf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_20,color_FFFFFF,t_70,g_se,x_16)
turtle库默认采用RGB小数值,可以使用turtle.colormode(mode)可切换。
- 1.0: RGB小数值
- 255:RGB整数值
color参数的三种形式
- 颜色字符串
turtle.pencolor("purple") - RGB的小数值:
turtle.pencolor(0.63, 0.13, 0.94) - RGB的元组值:
turtle.pencolor((0.63, 0.13, 0.94))
画笔控制函数
把海龟想象成画笔,画笔操作后一直有效,一般成对出现。
-
turtle.penup()别名:turtle.pu()将画笔抬起,海龟在飞行。
-
turtle.pendown()别名:turtle.pd()
落下画笔,海龟落下。
turtle.pensize(width)别名:turtle.width(width)
画笔宽度,海龟的腰围。
turtle.pencolor(color)color为颜色字符串 或 r,g,b值
画笔颜色,海龟在涂装
turtle.speed(speed),设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。turtle.fillcolor(colorstring)绘制图形的填充颜色turtle.hideturtle()隐藏画笔的turtle形状turtle.showturtle()显示画笔的turtle形状
运动控制函数
- 走直线:
turtle.forward(d)别名turtle.fd(d)
d的单位是像素,向前行进,海龟走直线。
d是行进距离,可以是负数。
-
turtle.backward(distance)向当前画笔相反方向移动distance像素长度 -
走曲线:
turtle.circle(r, extent = None)
根据半径r绘制extent角度(默认360)的弧形
圆心默认在海龟左手侧,如果r是负的,圆心在海龟右侧。
dot(r)绘制一个指定直径和颜色的圆点
![[]](https://img-blog.csdnimg.cn/65187d8ba3db47c281c2964bc5573dfe.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_20,color_FFFFFF,t_70,g_se,x_16)
方向控制函数
只改变行进方向,不会改变路线。
分为绝对角度和海龟角度。
turtle.setheading(angle)别名turtle.seth(angle)
改变行进方向,海龟走角度(改变绝对角度)
![)]](https://img-blog.csdnimg.cn/d72177f104054dfe835c6222c6f4b9e4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_20,color_FFFFFF,t_70,g_se,x_16)
turtle.left(angle)海龟向左转turtle.right(angle)海龟向右转
全局控制命令
-
turtle.clear()清空turtle窗口,但是turtle的位置和状态不会改变 -
turtle.reset()清空窗口,重置turtle状态为起始状态 -
turtle.undo()撤销上一个turtle动作 -
turtle.isvisible()返回当前turtle是否可见 -
turtle.write(s [,font=("font-name",font_size,"font_type")])写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
示例
蟒蛇绘制
【demo】
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40*2/3)
turtle.done()
![]](https://img-blog.csdnimg.cn/c22e856526964e79817404145a8db106.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQml0ZGFuY2luZw==,size_20,color_FFFFFF,t_70,g_se,x_16)
七段数码管日期显示
import turtle
import time
def drawGap(): # 绘制数码管间隔
turtle.penup()
turtle.fd(5)
def drawLine(draw): # 绘制单线
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
def drawDigit(digit): # 绘制单个数字
drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,6,8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawData(date):
turtle.pencolor("red")
for i in date:
if i == '-':
turtle.write("年", font=("Arial", 18, "normal"))
turtle.pencolor("green")
turtle.fd(40)
elif i == '=':
turtle.write("月", font=("Arial", 18, "normal"))
turtle.fd(40)
elif i == '+':
turtle.write("日", font=("Arial", 18, "normal"))
else:
drawDigit(eval(i))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
turtle.color("purple")
drawData(time.strftime("%Y-%m=%d+", time.gmtime()))
turtle.hideturtle()
turtle.done()
main()

太阳花
import turtle
import time
# 同时设置pencolor=color1, fillcolor=color2
turtle.color("red", "yellow")
turtle.begin_fill()
for _ in range(50):
turtle.forward(200)
turtle.left(170)
turtle.end_fill()
turtle.mainloop()
库函数表格整理
画笔运动命令
turtle.forward(distance)
向当前画笔方向移动distance像素长度
turtle.backward(distance)
向当前画笔相反方向移动distance像素长度
turtle.right(degree)
顺时针移动degree°
turtle.left(degree)
逆时针移动degree°
turtle.pendown()
移动时绘制图形,缺省时也为绘制
turtle.goto(x,y)
将画笔移动到坐标为x,y的位置
turtle.penup()
提起笔移动,不绘制图形,用于另起一个地方绘制
turtle.circle()
画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
setx( )
将当前x轴移动到指定位置
sety( )
将当前y轴移动到指定位置
setheading(angle)
设置当前朝向为angle角度
home()
设置当前画笔位置为原点,朝向东。
dot®
绘制一个指定直径和颜色的圆点
画笔控制命令
turtle.fillcolor(colorstring)
绘制图形的填充颜色
turtle.color(color1, color2)
同时设置pencolor=color1, fillcolor=color2
turtle.filling()
返回当前是否在填充状态
turtle.begin_fill()
准备开始填充图形
turtle.end_fill()
填充完成
turtle.hideturtle()
隐藏画笔的turtle形状
turtle.showturtle()
显示画笔的turtle形状
全局控制命令
turtle.clear()
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=(“font-name”,font_size,“font_type”)])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
其他命令
turtle.mainloop()或turtle.done()
启动事件循环 -调用Tkinter的mainloop函数。
必须是乌龟图形程序中的最后一个语句。
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。