python第三方库--turtle库

本文参考:中国大学MOOC嵩天老师的python课程

turtle库

基本介绍

  1. 入门级图形绘制函数第三方库1
  1. turtle绘图原理:一只海龟在窗体中行走,路径便是绘制的图形

绘图窗体布局

turtle的绘图窗体是一个画布空间,最小单位是像素

在使用turtle时分为屏幕坐标系和窗体坐标系

在这里插入图片描述

绘图窗体函数描述
turtle.setup(width,height,startx,starty)可以使用setup()函数设置窗体大小和相对屏幕的位置(默认位于屏幕中央),其中startx和starty两个参数可选

在这里插入图片描述

画笔控制

函数别名描述
turtle.penup()turtle.pu()提起画笔(常用于移动海龟位置,并不在画布上显示路径)
turlte.pendown()turtle.pd()落下画笔(与penup()函数成对出现)
turtle.pensize(width)/turtle.width(width)用于设置画笔宽度
turtle.pencolor(color)设置画笔颜色(color为颜色字符串或RGB数值2
turtle.speed(speed)设置画笔移动速度,范围取[0-10]的整数,数字越快速度越快,0最快

运动控制

turtle绘图体系中包含两种坐标体系:绝对坐标和海龟坐标
绝对坐标在绝对坐标系下的坐标体系,而海龟角度则是根据海龟的视角的角度体系
在这里插入图片描述

绝对坐标下运动控制函数描述
turtle.goto(x,y) /turtle.setpos(x,y)海龟移动到坐标(x,y)处

在这里插入图片描述

海龟坐标下运动控制函数别名描述
turtle.forward(d)turtle.fd(d)海龟前进d个像素
turtle.backward(d)turtle,bk(d)海龟后退d个像素
turtle.circle(r,angle,steps)海龟沿半径为r的圆前进(angle/360)个圆周,即画圆圈3

方向控制

turtle库中包含两种角度体系:绝对角度和海龟角度
其中绝对角度在绝对坐标系下的角度体系,而海龟角度则是根据海龟的视角的角度体系
在这里插入图片描述

绝对角度方向控制函数描述
turtle.seth(angle)改变海龟前进角度,不使海龟前进,angle为绝对角度

在这里插入图片描述

海龟角度方向控制函数描述
turtle.left(angle)控制海龟向左转角度angle(angle是相对于海龟前进的角度,并不使海龟前进)
turtle.right(angle)控制海龟向右转角度angle(同上)

RGB色彩体系

RGB指红蓝绿三个通道的颜色组合,覆盖人类视力能够感知的所有颜色,每个颜色的取值范围为整数(0-255)小数(0-1)

在这里插入图片描述
在这里插入图片描述
turtle的RGB色彩模式默认采用小数值,可以切换为整数值:turtle.colormode(mode)
mode=1,小数模式,修改颜色使用RGB小数值
mode=255,整数模式,修改颜色使用RGB整数值

颜色填充

函数描述
turtle.begin_fill()开始填充
turtle.fillcolor(color)填充颜色
turtle.end_fill()结束填充
turtle.filling()判断是否为填充状态

其它函数

设置画笔

函数描述
turtle.hideturtle()隐藏画笔
turtle.showturtle()显示画笔
turtle.delay()设置并返回绘图延迟
turtle.dot(r,color)绘制半径为r,颜色为color的圆点
turtle.reset()从屏幕中删除海龟的绘图,海龟回到原点并设置所有变量为默认值
turtle.clear()从屏幕中删除指定海龟的绘图。不移动海龟。海龟的状态和位置以及其他海龟的绘图不受影响
turtle.setx(x)设置海龟的横坐标为 x,纵坐标保持不变
turtle.sety(y)设置海龟的纵坐标为 y,横坐标保持不变

获取海龟(画笔)状态

函数描述
turtle.home()设置当前画笔位置为原点,朝向东
turtle.position()获取海龟当前位置
turtle. towards(x,y)从海龟位置到到 (x,y)的矢量到海龟初始朝向的矢量的夹角。
turtle.xcor()x坐标
turtle.ycor()y坐标
turtle.heading()返回海龟朝向角度
turtle.distance(x,y)返回从海龟位置到 (x,y)的单位距离

turtle绘图示例

示例1:python蟒蛇绘制

import turtle
turtle.setup(700,500)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor('purple')
for i in range(4):
	turtle.circle(40,80)
	turtle.circle(-40,80)
turtle.circle(40,40)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()	
	

在这里插入图片描述

示例2:七彩车轮

iimport turtle
import random
turtle.setup(800,400)
angle=36
color=['pink','purple','green','cyan','gold','brown','yellow','blue']
for i in range(10):
    turtle.pensize(10)
    pencolor=color[random.randint(0,7)]
    turtle.pencolor(pencolor)
    turtle.fd(180)
    if i==9:
        turtle.left(angle)
        turtle.penup()
        turtle.goto(0,-180)
        turtle.pd()
        turtle.circle(180) 
        
    else:
        turtle.penup()
        turtle.goto(0,0)
        turtle.pd()
        turtle.left(angle)
turtle.circle(180)    
turtle.done()

在这里插入图片描述

示例3:六芒星

import turtle
import math

turtle.pensize(4)
turtle.pencolor('brown')

# 绘制小六边形
turtle.left(30)
for i in range(6):
    turtle.fd(50)
    turtle.left(60)
# 调整画笔状态,准备绘制大六边形    
turtle.penup()    
turtle.goto(0,-50)
turtle.pendown()
# 大六边形
for i in range(6):
    turtle.fd(100)
    turtle.left(60)
# 绘制小六角星    
turtle.left(30)    
for i in range(3):
    turtle.fd(100*(math.sqrt(3)))
    turtle.left(120)   
turtle.right(60)
turtle.pu()
turtle.circle(100,60)
turtle.pd()
turtle.left(60)
for i in range(3):
    turtle.fd(100*(math.sqrt(3)))
    turtle.left(120)
# 调整画笔状态,准备绘制第一个大六角星    
turtle.right(90)
turtle.pu()
turtle.goto(0,-100)
turtle.pd()
turtle.left(30)
# 第一个大六角星
for i in range(3):
    turtle.fd(150*(math.sqrt(3)))
    turtle.left(120)
turtle.right(60)
turtle.circle(150)
turtle.circle(150,60)
turtle.left(60)
for i in range(3):
    turtle.fd(150*(math.sqrt(3)))
    turtle.left(120)
# 调整画笔状态,准备绘制第二个大六角星    
turtle.right(60)
turtle.circle(150,30)
turtle.pensize(1)
turtle.left(60)
# 第二个大六角星
for i in range(3):
    turtle.fd(150*(math.sqrt(3)))
    turtle.left(120)
turtle.right(60)
turtle.circle(150,60)
turtle.left(60)
for i in range(3):
    turtle.fd(150*(math.sqrt(3)))
    turtle.left(120)
# 调整画笔状态,准备绘制六连环    
turtle.pu()
turtle.goto(0,50)
turtle.pd()
# 六连环绘制
turtle.color('black')
for i in range(6):
    turtle.circle(75)
    turtle.left(60)

turtle.done()   

在这里插入图片描述


  1. 标准库:随解释器直接安装到操作系统中的功能模块
    第三方库:需要经过安装才能使用的函数库 ↩︎

  2. 此处的RGB数值有两种表示方式,分别为元组形式或数值形式,如turtle.pencolor(255,255,255)turtle.pencolor((255,255,255)) ↩︎

  3. 海龟画圆时,圆心的默认位置是其左方90度距离r的绝对值的位置(r为负值时圆心位于右方),其中第三个参数steps,未指定时,circle()函数绘制圆弧,指定时则绘制边数为steps的多边形,如绘制一个三角形我们用一行代码实现:turtle.circle(50,360,3) ↩︎

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夺笋123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值