引入绘图库turtle(海龟库)
#库的引入方式有三种
#import <库名>
import turtle #引入海龟库
turtle.goto(20) #使用turtle库中的goto函数
#缺点:代码冗余
#from <库名> import <函数名>
from turtle import * #星号代表全部
from turtle import goto
goto.(20) #不用重复标明函数所属库
#缺点:可能导致引用的函数名与自定义的函数名冲突
#import <库名> as <别名>(给库起个小名)
import turtle as t
t.goto(20)
turtle海龟库是turtle绘图体系的Python实现,是Python标准库之一,属于入门级图形绘制函数库。
Python计算生态=标准库+第三方库。
标准库:随解释器直接安装到操作系统中的功能模块。
第三方库:需要安装才能使用的功能模块。
库Library、包Package、模块Module,统称模块。
turtle窗体布局
turtle.setup(width, height, startx, starty) #相对于显示器左上角(0, 0)
默认位置正中心,单位都是像素。
![](https://i-blog.csdnimg.cn/blog_migrate/57e8d68bf8ec1391b56588c3cc4a68d8.png)
绘制完成后窗体默认自动退出,done函数控制手动关闭窗体。
不过在IDLA上我没加这一行试了试,发现并没有自动退出。
turtle.done()
turtle空间坐标体系
绝对坐标
以窗体中心为原点(0, 0)的平面直角坐标系。
turtle.goto(x, y) #走直线到点(x, y)
海龟坐标
以海龟目前位置为原点且目前朝向为前进方向(后方为后退方向,左右两侧分别为左侧方向、右侧方向)。
turtle.fd(d) #forward前进d个像素
turtle.bk(d) #backward后退d个像素
turtle.circle(r,angle) #圆心在左侧距离半径r的位置处,angle为绘制角度(默认None即360度)
turtle角度坐标体系
绝对角度
固定在窗体上的度数,逆时针为正。
turtle.seth(angle) #只改变行进方向
海龟角度
turtle.left(angle) #向左转angle,基于当前方向
turtle.right(angle) #向右转angle
RGB色彩模式
默认0-1小数表示。
turtle.colormode(mode) #更改色彩表示模式
turtle.colormode(1.0)
turtle.colormode(255)
turtle画笔控制函数
画笔初始默认位置在窗体中心。
#画笔抬起
turtle.penup()
turtle.pu()
turtle.up()
#画笔落下
turtle.pendown()
turtle.pd()
#画笔宽度
turtle.pensize(width)
turtle.width(width)
#画笔颜色
turtle.pencolor(color) #color有三种写法
turtle.pencolor("purple") #小写+引号
turtle.pencolor(0.63,0.13,0.94)
turtle.pencolor((0.63,0.13,0.94))
turtle运动控制函数
这部分函数在前面基本上提到过。
#绝对坐标行走
turtle.goto(x, y) #走直线到(x, y)
#海龟坐标行走
turtle.fd(d) #forward前进d个像素
turtle.bk(d) #backward后退d个像素,注意不是扭头前进,而是后退
turtle.circle(r,angle) #圆心在左侧距离半径r的位置处,angle为绘制角度(默认None即360度)
turtle方向控制函数
只改变海龟头朝向,这部分函数在前面基本上提到过。
#绝对方向
turtle.setheading(angle)
turtle.seth(angle)
#海龟方向
turtle.left(angle) #向左转angle,基于当前方向
turtle.right(angle) #向右转angle
特别注意
所有负号表示反方向。
练习
正方形
import turtle as t
t.setup(300, 300)
t.pu()
t.bk(50)
t.pd()
for i in range(4):
t.fd(100)
t.left(90)
![](https://i-blog.csdnimg.cn/blog_migrate/5102a6b7d18eb33fd80faca7ed114052.gif)
演示
六边形
import turtle as t
t.setup(300, 300)
t.pu()
t.bk(100)
t.seth(-60)
t.pd()
for i in range(6):
t.fd(100)
t.left(60)
![](https://i-blog.csdnimg.cn/blog_migrate/a493bd51a933b4babac6bbc8dcba6632.gif)
叠边形
设内角为100度,2圈。
import turtle as t
t.setup(300, 300)
t.pu()
t.goto(-50, -50)
t.pd()
for i in range(9): #叠边形外角和是360的正整数倍,2*360/(180-100)=9
t.fd(100)
t.left(80)
![](https://i-blog.csdnimg.cn/blog_migrate/920c641fa9d9919edea734b1f39230d3.gif)
风轮
每个风轮内角为45度,风轮边长150像素。
import turtle as t
t.setup(400, 400)
for i in range(4):
t.seth(i * 90)
t.fd(150)
t.right(90)
t.circle(-150, 45)
t.goto(0, 0)
![](https://i-blog.csdnimg.cn/blog_migrate/e31c8f7efa19025674a283d769248238.gif)
跟学课程:慕课MOOC《Python语言程序设计》