Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。 使用时需要添加头文件
import turtle
一、画布(canvas)
画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置 设置画布的大小:
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
canvwidth:画布的宽(单位像素,默认值400) canvheight:画布的高(单位像素,默认值300) bg:背景颜色 使用:
t.screensize(800,600,'blue')
turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例 startx, starty: 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心 使用:
turtle.setup(width=0.9, height=0.9)
turtle.setup(0.9,0.9) #和上面代码效果相同
turtle.setup(width=800, height=800, startx=100, starty=100)
二、画笔
2.1画笔的状态
在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟. 这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中, 就是使用位置方向描述小乌龟(画笔)的状态
2.2 画笔的属性
画笔(画笔的属性,颜色、画线的宽度)
turtle.pensize():设置画笔的宽度;turtle.pencolor(); 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", “red”,也可以是RGB 3元组turtle.speed(speed): 设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快
2.3 绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令 1、画笔运动的命令: 2、画笔控制命令 3、全局控制命令 4、其他命令 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/eeae8f5367a53e09e9b5126cb0d6b2a2.png)
三、circle函数
以给定半径画圆
turtle.circle(radius, extent=None, steps=None)
radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆 extent(弧度) (optional); steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)
举例:
turtle.circle(50) # 整圆;
turtle.circle(50,steps=3) # 三角形;
turtle.circle(120, 180) # 半圆
四、绘图举例
奥运五环
实现代码
import turtle as t
#直接到达坐标x,y的位置
def go(x,y) :
t.penup()
t.goto(x,y)
t.pendown()
#设置画布大小、画笔大小、画笔粗细
def pen() :
t.screensize(0.99, 0.99)
t.pensize(10)
t.speed(10)
def main() :
pen()
pencolor = ['blue','black','red','yellow','green'] #列表存储画笔颜色
x = -450
y = 0
for i in range(5) :
if i == 3 :
x = -225
y = -150
if i < 3 :
go(x + i * 450,y)
t.pencolor(pencolor[i])
t.circle(200)
else :
go(x + ( i - 3 ) * 450, y)
t.pencolor(pencolor[i])
t.circle(200)
if __name__ == '__main__':
main()
520
实现代码
from turtle import *
def go_to(x, y):
up()
goto(x, y)
down()
def big_Circle(size): #函数用于绘制心的大圆
speed(10)
for i in range(150):
forward(size)
right(0.3)
def small_Circle(size): #函数用于绘制心的小圆
speed(10)
for i in range(210):
forward(size)
right(0.786)
def line(size):
speed(10)
forward(51*size)
def heart( x, y, size):
go_to(x, y)
left(150)
begin_fill()
line(size)
big_Circle(size)
small_Circle(size)
left(120)
small_Circle(size)
big_Circle(size)
line(size)
end_fill()
def arrow():
pensize(10)
setheading(0)
go_to(-400, 0)
left(15)
forward(150)
go_to(339, 178)
forward(150)
def arrowHead():
pensize(1)
speed(10)
color('red', 'red')
begin_fill()
left(120)
forward(20)
right(150)
forward(35)
right(120)
forward(35)
right(150)
forward(20)
end_fill()
def main():
pensize(2)
color('red', 'pink')
#getscreen().tracer(30, 0) #取消注释后,快速显示图案
heart(200, 0, 1) #画出第一颗心,前面两个参数控制心的位置,函数最后一个参数可控制心的大小
setheading(0) #使画笔的方向朝向x轴正方向
heart(-80, -100, 1.5) #画出第二颗心
arrow() #画出穿过两颗心的直线
arrowHead() #画出箭的箭头
go_to(400, -300)
done()
if __name__ == '__main__':
main()
小猪佩奇
实现代码
from turtle import*
speed(10)
def nose(x,y):#鼻子
penup()#提起笔
goto(x,y)#定位
pendown()#落笔,开始画
setheading(-30)#将乌龟的方向设置为to_angle/为数字(0-东、90-北、180-西、270-南)
begin_fill()#准备开始填充图形
a=0.4
for i in range(120):
if 0 |