第一节 turtle库(绘制图形)
1.turtle库原理与引用
turtle(海龟)是Python重要的标准库之一,它能够进行基本的图形绘制。
turtle库绘制图形有一个基本框架:
- 一个小海龟在窗体中爬行,其爬行轨迹形成了绘制图形;
- 对于小海龟来说,有“前进”、“后退”、“旋转”等爬行行为;
- 对坐标系的探索也通过“前进方向”、“后退方向”、“左侧方向”和“右侧方向”等小海龟自身角度方位来完成;
库的引用(导入)格式(以turtle库为例)
python中标准库的引用格式有以下三种:
- import turtle,则对turtle库中函数调用采用==turtle.<函数名>()==形式。
- from turtle import *,则对turtle库中函数调用直接采用**<函数名>()**形式,不在使用 turtle.作为前导。
- import turtle as t,则对turtle库中函数调用采用更简洁的==t.<函数名>()==形式,保留字as的作用是将turtle库给予别名t
- from turtle import fd,表示只引用turtle库中的fd()函数(导入时函数不加括号,多个函数用逗号分隔)
2.turtle绘图窗体布局
绘制turtle图形首先需要一个绘图窗体,在操作系统上表现为一个窗口,它是turtle的一个画布空间。
- 在窗口中使用的最小单位是像素。
- 在屏幕坐标系和窗体坐标系中存在窗体位置和大小的问题。
- turtle.setup()函数用来设置启动窗体的位置和大小。
turtle.setup(width,height,startx,starty): - width :窗口宽度,如果值是整数,表示的像素值;如果值 是小数,表示窗口宽度与屏幕的比例;
- height: 窗口高度,如果值是整数,表示的像素值;如果 值是小数,表示窗口高度与屏幕的比例;
- startx:窗口左侧与电脑屏幕左侧的像素距离,默认值为0 ,表示窗口位于屏幕水平中央;
- starty:窗口顶部与电脑屏幕顶部的像素距离,默认值为0 ,表示窗口位于屏幕垂直中央;
下面用一个图来更形象的讲解setup()函数的四个参数的作用
关于setup()函数参数的小tip:
1.图中较大的矩形表示的是电脑屏幕,其左上方的顶点坐标为(0,0);
2.窗体左上方顶点的坐标为(startx,starty)
3.setup()函数的最后两个参数(startx,starty)有默认值,默认窗体打开在屏幕正中央。
4.setup()函数的最后两个参数(startx,starty)一般都为默认值。
5.setup()函数影响着后面所有会用到像素距离的函数。
练习:
turtle.setup(800,400,0,0)
#表示打开一个宽为800像素,高为400像素的绘图窗口,且绘图窗口左上方的顶点与电脑屏幕的左上方顶点相同。
turtle.setup(800,400,0,0)
#表示打开一个宽为800像素,高为400像素的绘图窗口,且绘图窗口在电脑屏幕的正中央。
3.turtule坐标体系
- turtle绘制图形其本质可看为一个小海龟在窗体中爬行,其爬行轨迹形成了绘制图形。
- turtle库有两种坐标体系,且每种坐标体系又可分为绝对坐标和海龟坐标
- 无论是哪一种坐标体系的哪一种坐标,海龟(画笔)的初始位置都在窗体的正中心,且海龟朝向正右方
turtle空间坐标体系
绝对坐标
- 与数学中的空间坐标体系完全一致
- 画笔初始位置的坐标为(0,0)
turtle空间坐标轴的绝对坐标示意图如下:
注:图中坐标100是虚指,表示无穷大,但实际坐标轴的长短取决于绘图窗体的大小,即坐标轴受setup()函数的影响。
turtle.goto(x,y)函数
作用:画一条直线(从当前画笔的位置到**绝对坐标(x,y)**的一条直线)
注:使用turtle()函数时,画笔前后方向不改变,即turtle()函数不改变画笔的方向
海龟坐标
turtle空间坐标轴的海龟坐标示意图如下:
在这种坐标下,我们可用到以下函数:
turtle.fd(d)函数:
作用:表示海龟沿着当前方向向前走d个像素,其爬行轨迹为直线。
别名:turtle.forward(d)
turtle.bk(d)函数:
作用:表示海龟往沿着当前方向往后退d个像素,其爬行轨迹为直线。
别名:turtle.backward(d)
注:
- 使用turtle.bk(d)函数不改变海龟的方向,只是让海龟往后退。
- 参数d可以为负数,表示海龟后退(fd函数)/前进(bk函数)
turtle.circle(r,angle)函数:
作用:表示海龟往沿着当前方向左侧距离为r像素的点为圆心,转过角度为angle的圆周运动(默认为360度),其爬行轨迹为曲线(圆周的一部分)。
注:r为负数表示圆心在右侧|r|的位置上
turtle角度坐标体系
turtle角度坐标体系改变的是画笔(海龟)的方向,且只改变方向,不绘制任何信息。
绝对坐标(从绝对坐标角度出发)
turtle角度坐标体系的绝对坐标体系示意图:
turtle.seth(angle)函数:
作用:将画笔方向转向angle这一绝对方向。
海龟角度(从海龟当前方向出发)
turtle角度坐标体系的海龟坐标体系示意图:
turtle.left(angle)函数:
作用:将海龟**沿当前方向向左转**angle度。
turtle.right(angle)函数:
作用&