前言 turtle(海龟库)是python的一个绘制图像的函数库,它就像海龟一样,给定指令和坐标,在画布坐标系中一步一步绘制出你想要的图形,比如小猪佩奇、哆啦A梦、皮卡丘等。
但是在本地直接进行安装时候会出现错误: pip install turtle
Command "python setup.py egg_info" failed with error code 1 in C:\Users\XXX\AppData\Local\Temp\pip-install-qm1_x9jy\turtle\ 提示语法错误
先按照给定的tar.gz函数包的下载链接输入浏览器进行下载(每个人可能不一样) https://files.pythonhosted.org/packages/ff/f0/21a42e9e424d24bdd0e509d5ed3c7dfb8f47d962d9c044dba903b0b4a26f/turtle-0.0.2.tar.gz 按照网址下载安装包,进行源码安装!
把文件压缩包进行下载并且进行解压,然后在对里面:
在setup.py里面进行修改:
修改第40行代码如下(其实就是增加了括号,python2的语法格式是没有括号的,但是python3没有括号就会报错,就像print函数)
except (ValueError, ve):
然后进入cmd命令窗口进行:再用pip安装,此处 pip install 后面接的是你修改好的turtle文件夹所在位置
pip install C:\Users\XXX\Desktop\turtle-0.0.2
然后进行比较验证: 验证成功
Turtle库基础知识
1.画布(canvas)
画布就是turtle为我们展开用于绘图区域默认大小(400, 300),我们可以设置它的大小和初始位置。
2.画笔(pen)
2.1画笔的状态
在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。
这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
2.2 画笔的属性
画笔(画笔的属性,颜色、画线的宽度等)
turtle.pensize():设置画笔的宽度;
turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
2.3 绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为3种:
一种为运动命令,
一种为画笔控制命令,
还有一种是全局控制命令。
2.3.1 画笔运动命令:
命令 说明
turtle.home() 将turtle移动到起点(0,0)和向东
turtle.speed(speed) 画笔绘制的速度范围[0,10]整数
turtle.forward(distance) 向当前画笔方向移动distance像素长
turtle.backward(distance) 向当前画笔相反方向移动distance像素长度
turtle.right(degree) 顺时针移动degree°
turtle.left(degree) 逆时针移动degree°
turtle.pendown() 移动时绘制图形放下笔,,默认绘制
turtle.penup() 移动时不绘制图形,提起笔,用于另起一个地方绘制时用
turtle.circle(r,extent,step) 绘制一个指定半径、弧度范围、阶数(正多边形)的圆
turtle.dot(diameter,color) 绘制一个指定直径和颜色的圆
2.3.2 画笔控制命令:
命令 说明
turtle.pencolor() 画笔颜色
turtle.pensize(width) 画笔宽度(绘制图形时的宽度)
turtle.color(color1, color2) 同时设置pencolor=color1, fillcolor=color2
turtle.filling() 返回当前是否在填充状态
turtle.begin_fill() 准备开始填充图形
turtle.end_fill() 填充完成
turtle.hideturtle() 隐藏画笔的turtle形状
turtle.showturtle() 显示画笔的turtle形状
2.3.3 全局控制命令
命令 说明
turtle.clear() 清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset() 清空窗口,重置turtle状态为起始状态
turtle.undo() 取消最后一个图的操作
turtle.isvisible() 返回当前turtle是否可见
turtle.stamp() 复制当前图形
turtle.write(s, [font=("font-name",font_size,"font_type")]) 写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
2.2.3其他命令
命令 说明
turtle.mainloop()或turtle.done() 启动事件循环 -调用Tkinter的mainloop函数。必须是乌龟图形程序中的最后一个语句。 turtle.mode(mode=None) 设置乌龟模式(“standard”,“logo(向北或向上)”或“world()”)并执行重置。如果没有给出模式,则返回 当前模式。
turtle.undo() 取消最后一个图的操作
turtle.isvisible() 返回当前turtle是否可见
turtle.stamp() 复制当前图形
turtle.write(s, [font=("font-name",font_size,"font_type")]) 写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
小例子: Rose(玫瑰花)
import turtle
# 设置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)
# 花蕊
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10, 180)
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()
# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)
# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)
# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)
# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200, 60)