海龟库(Turtle)
-
海龟库 (turtle) 是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
-
海龟库积木盒有点类似Kitten创作工具的画笔和动作积木盒的结合体,可以绘制、控制画笔移动,大家使用一下就可以体会了哦。
-
在客户端中,海龟图的绘图窗口与网页端不同,是以弹窗的形式,在运行作品时出现的。你可以通过拖拽拉伸来调节海龟窗口的尺寸。
-
海龟图和math库、random库一样,需要先导入库
import turtle
,才可以使用库中的函数。使用海龟库中的函数,你可以画出各种有趣的图形。
#1.画笔
- 对应代码:
import turtle #导入海龟库
__Pen = turtle.Pen() #新建一个画笔,默认命名为__Pen;专业的话来说:将turtle.Pen对象实例化,赋值给变量__Pen __Pen #__Pen就是上图中的"画笔"积木
这里为大家默认设置了画笔(__Pen).【取这么奇怪的名字是因为希望大家新建变量的时候尽量避免使用同名变量!】
- 对应代码:
import turtle
t = turtle.Pen()
除了默认的画笔,也可以自己新建变量,把变量设置为新的画笔属性。
看到上面两个积木,大家可能有点疑惑了,什么对象啊,实例化啊,到底是什么意思呢?别担心慢慢听技术喵道来。
-
画笔的概念:
-
在前面的《函数》中我们讲到,Python中还有一种比函数更强大、更方便的数据类型,叫做“对象”。在这里,“画笔”就是一个对象。
-
对于“对象”这个概念理解起来可能比较抽象,大家可以这样理解,其实每只画笔就是海龟图上那个小小的箭头,海龟图可以支持同时有多个画笔在运行,所以我们必须给每只画笔取个名字,后面的积木才知道到底是哪个画笔在执行命令。
-
一般情况下大家使用咱们默认的画笔积木就可以了,如果设置了新的画笔,后面所有包含 “画笔”字样的积木,必须要告诉他们是用默认画笔,还是用新建的变量设置的画笔。
-
#2.设置背景颜色
- 对应代码:
import turtle
turtle.bgcolor("#cc66cc")
-
含义:
填充海龟图背景颜色,选择颜色的方式有很多种,包括:
-
颜色下拉选项
这样的方式非常直观,颜色会翻译成十六进制RGB颜色字符串。
turtle.bgcolor("#cc66cc") #十六进制RGB颜色字符串:#后面的六个字符,分别是3个2位的十六进制数,这三个数分别代表红色、绿色、蓝色三种颜色。由这三种颜色混合,可以形成人眼可以识别的几乎各种颜色,
-
颜色单词字符串
Python收录了常见的各种颜色的英文单词,常用的有:
'red', 'blue','white','green','black','purple','yellow','orange','pink'
用单词字符串表示颜色,无论翻译成代码还是积木,都是单词字符串。上图积木转换成的代码是:
turtle.bgcolor('red')
-
RGB颜色字符串
-
颜色还可以由RGB来表示,RGB分别代表红色、绿色、蓝色三种颜色,由这三种颜色混合,可以形成人眼可以识别的几乎各种颜色。
不过比较特殊的是,上面这种积木,不会在积木盒中直接出现,但是你仍然可以通过代码书写,然后转换为积木:
turtle.bgcolor(255,255,0)
-
其他嵌套方式
颜色积木可以塞入变量和列表某一项,可以搭配实现更多的变换和功能。
#3.设置画笔颜色
- 对应代码:
import turtle
__Pen = turtle.Pen() __Pen.pencolor("#cc66cc") #设置画笔的颜色
- 含义:
-
设置特定画笔的颜色。设置画笔颜色的交互规则,与“设置背景颜色”积木完全相同。
-
可以类比Kitten创作工具中的画笔积木盒。
-
#4.设置画笔粗细
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.pensize(5) #设置画笔粗细
-
含义:
- 设置画笔的粗细。
- 画笔的粗细的值为自然数。
- 可以类比Kitten创作工具中的画笔积木盒。
#5.设置画笔速度
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.speed(5) #设置画笔运行速度
-
含义:
-
设置画笔绘制的速度。
-
画笔的速度的值为自然数。范围为0-10。
-
当速度值为0时,画笔将以非常快的速度运动,肉眼几乎很难捕捉到。
-
#6.绘制圆
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.circle(50) #绘制圆
-
含义:
-
用画笔绘制指定半径的圆。
-
圆的半径可以取整数、小数,也可以取正数、负数:
-
若半径是正数,则画笔以逆时针画圆;
-
若半径是负数,则画笔以顺时针画圆。
-
-
#7.绘制点
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.dot(20) #绘制半径
-
含义:
-
用画笔绘制指定半径的点。
-
圆的半径可以取整数、小数,也可以取正数、负数。
-
若半径是负数,则画点时取其绝对值作为点的半径。
-
#8.绘制正多边形
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.circle(30, steps=5) #绘制外接圆半径
-
含义:
-
用画笔绘制正多边形,所有的正多边形都有外接圆,这里用外接圆的半径来定义正多边形的大小。
-
多边形的边数一般都是正整数。
-
边数特殊情况下也可以是小数,则多边形的边无法正常闭合。
-
外接圆半径可以取正数也可以取负数。
- 若取正数,则逆时针画多边形;
- 若取负数,则顺时针画多边形。
-
#9.画笔向前/向后移动
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.forward(100) #画笔向前移动100 __Pen.backward(100) #画笔向后移动100
-
含义:
-
使画笔向前移动或向后移动。
-
同Kitten一样,如果输入的是负数,则会向当前相反的方向移动哦~
-
#10.画笔向左/向右旋转
- 对应代码:
import turtle
__Pen = turtle.Pen() __Pen.right(90) #画笔向右旋转 __Pen.left(90) #画笔向左旋转
- 含义:
- 使画笔向右或向左旋转。
- 同Kitten一样,如果输入的是负数,则会向当前相反的方向旋转。
#11.画笔面向
- 对应代码:
import turtle
__Pen = turtle.Pen() __Pen.setheading(30) #设置画笔面向特定角度
- 含义:
-
设置画笔朝向某个角度。
-
海龟图的坐标系同Kitten舞台相似。右侧水平方向为0度,角度向逆时针方向增加。
-
#12.移动画笔到特定位置
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.goto(100,100) #在一定时间内画笔移到特定的坐标位置
-
含义:
-
使画笔移到特定坐标位置。
-
海龟图同Kitten舞台相似,正中心为坐标原点,x轴正方向为水平向右方向;y轴正方向为竖直向上方向。
-
可以参考上面的坐标系图。
-
#13.设置画笔坐标
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.setx(100) #设置画笔x坐标 __Pen.sety(100) #设置画笔y坐标
-
含义:
-
分别设置画笔x坐标,画笔y坐标。
-
不同于Kitten可以瞬间设置画笔x,y坐标,海龟图会有肉眼可见的移动时间。
-
#14.设置画笔填充色
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.fillcolor("#cc66cc") #设置图形填充颜色 __Pen.begin_fill() #设置当前点为填充起点 __Pen.end_fill()#设置当前点为填充终点
-
含义:
- 这三块积木经常搭配使用,可以填充海龟图绘制的形状或路径。
- 填充色关于颜色积木的几种用法跟上面的设置背景色积木一样。
- 如果没有设置填充颜色,会默认填充为黑色。
-
举例:
代码:
import turtle
__Pen = turtle.Pen() #开始进入Python的世界 __Pen.fillcolor("#cc66cc") #设置填充色 __Pen.begin_fill() #设置为填充起点 __Pen.circle(50) #绘制一个圆 __Pen.end_fill() #设置为填充终点
#15.画笔抬笔/落笔
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.pendown()#画笔落笔 __Pen.penup() #画笔抬笔
-
含义:
- 海龟图默认画笔落笔,这点和Kitten默认抬笔是不同的哦。
- 和Kitten类似,画笔抬笔之后,移动画笔的同时不会在画布上留下痕迹;使用“落笔”积木,可以使画笔落下,继续作画。
#16.清空画笔
- 对应代码:
import turtle
__Pen = turtle.Pen() __Pen.clear() #清空画笔
- 含义:
- 同Kitten类似,“清空画笔”可以清空画布上由该画笔绘制的所有内容。
- 跟Kitten不同的是,在海龟图中可以清除单只画笔所绘制的痕迹。
#17.画笔文字印章
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.write('Hello') #以默认样式,绘制文字印章 __Pen.write('Hello', font = ('Arial', 8, 'normal')) #指定字体、字号、是否倾斜,绘制文字印章
-
含义:
- 文字印章,就是使用画笔在画布上,“印”出自己希望的内容,这些内容可以是字符串、数字、变量、列表等等。同Kitten类似,文字印章的颜色由画笔本身的颜色决定,并且经常和可以运动的积木配合使用。
- 点击积木右侧的加号,可以通过参数,设置文字印章的字体、字号、类型等。文字类型为正常、倾斜、加粗。
#18.画笔停止运行
-
对应代码:
import turtle turtle.done()
-
含义:
- 在客户端中,由于Python3本身的机制,海龟作图结束时,画布窗口就会关闭,这样我们就会看不清楚自己画的作品,为了避免这个问题,我们可以使用上述“画笔停止运行”积木。只要把这块积木紧接在海龟作图程序的最后,作图结束之后,图像就会保留在屏幕上了!快来试试看吧!
#19. 画笔的x坐标/y坐标
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.xcor() # 画笔的x坐标 __Pen.ycor() # 画笔的y坐标
-
含义:
- 在画图过程中,如果需要获取画笔位置,就需要用到这块积木啦。积木的返回值即画笔当前的x坐标或y坐标值。
#20. 隐藏/显示画笔
-
对应代码:
import turtle __Pen = turtle.Pen() __Pen.hideturtle() # 隐藏画笔 __Pen.showturtle() # 显示画笔
-
含义:
- 在画图过程中,如果有时需要画笔消失,就可以使用这块积木来控制画笔隐藏、显示哦。
#21. 生成对话框获取字符输入
-
对应代码:
import turtle __Pen = turtle.Pen() turtle.textinput('对话框','请输入字符')
-
含义:
- 当你需要图形界面弹窗来获取用户输入的字符内容时,可以使用上面这块积木。
- 积木有两个参数,标题和内容,分别对应图中对话框顶部的标题和提示用户输入的内容。运行时,对话框会在海龟作图画布上方自动弹出。
- 积木返回值,为字符串格式。
#22. 生成对话框获取数字输入
-
对应代码:
import turtle __Pen = turtle.Pen() turtle.numinput('对话框','请输入数字') # 默认样式 turtle.numinput('对话框','请输入数字',0) # 点击一次加号,设置默认返回值 turtle.numinput('对话框','请输入数字',0,0) # 点击两次加号,设置最小值 turtle.numinput('对话框','请输入数字',0,0,100)# 点击三次加号,设置最大值
-
含义:
- 与上面的”生成对话框获得字符输入“积木类似,当你需要图形界面弹窗来获取用户输入的数值内容时,可以使用上面这块积木。
- 积木有五个参数,最常用的两个默认参数,仍然是标题和内容,分别对应图中对话框顶部的标题和提示用户输入的内容。后面默认隐藏的三个参数,分别是:
- 默认值:对话框中默认显示的数字。如上图,若设置默认值为0,弹窗出现时文本框值为0;
- 最小值:允许用户输入的数字最小值。若输入不符合范围,点击OK时会报错;
- 最大值:允许用户输入的数字最大值。若输入不符合范围,点击OK时会报错。
- 运行时,对话框会在海龟作图画布上方自动弹出。
- 积木返回值,为数字格式。