一、Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

二、基础概念

1、画布画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置。常用的画布方法有两个:screensize()setup()

(1)turtle.screensize(canvwidth, canvheight, bg):参数分别为画布的宽(单位像素), 高, 背景颜色

如:

turtle.screensize(800,800,'pink')

 

(2)turtle.setup(width, height, startx, starty):width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例。(startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。

 

2、画笔:在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:标原点(位置),面朝x轴正方向(方向),turtle绘图中, 就是使用位置方向描述小乌龟(画笔)的状态。

 

(1)画笔属性:

1) turtle.pensize():设置画笔的宽度;

2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。

3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

(2)绘制命令:

1)turtle.forward(distance)(别名:turtle.fd):向当前画笔方向移动distance像素长度。

2)turtle.backward(distance):向当前画笔相反方向移动distance像素长度。

3)turtle.right(degree):顺时针移动degree°。

4)turtle.left(degree):逆时针移动degree°。

5)turtle.pendown()(别名:turtle.pd(),turtle.down()):移动时绘制图形,缺省时也为绘制。

6)turtle.goto(x,y):将画笔移动到坐标为x,y的位置。

7)turtle.penup()(别名:turtle.pu(),turtle.up()):提起笔移动,不绘制图形,用于另起一个地方绘制。

8)turtle.circle():画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆。

9)setx( ):将当前x轴移动到指定位置。

10)sety( ):将当前y轴移动到指定位置。

11)setheading(angle):设置当前朝向为angle角度。

12)home():设置当前画笔位置为原点,朝向东。

13)dot(r):绘制一个指定直径和颜色的圆点。

14)turtle.fillcolor(colorstring):绘制图形的填充颜色。

15)turtle.color(color1, color2):同时设置pencolor=color1, fillcolor=color2。

16)turtle.filling():返回当前是否在填充状态。

17)turtle.begin_fill():准备开始填充图形。

18)turtle.end_fill():填充完成。

19)turtle.hideturtle():隐藏画笔的turtle形状。

20)turtle.showturtle():显示画笔的turtle形状。

21)turtle.seth(to_angle)(别名:turtle.setheading(to_angle)):设置小海龟当前前进方向为to_angle,该角度是绝对方向的角度值。

三、实例、

from turtle import*

color('red','yellow')#设置画笔颜色为蓝色,填充颜色为绿色

speed(8)#设置画笔速度

begin_fill()#准备开始填充图形

while True:

forward(170)#画笔移动200个像素长度

left(170)#逆时针移动170

if abs(pos())<1:#判断画笔是否回到起点

break

end_fill()#结束填充图形

done()

2、玫瑰花

from turtle import *#global pen and speed

pencolor("black")

fillcolor("red")

speed(50)

s=0.15#init poistionpenup()

goto(0,600*s)

pendown()

begin_fill()

circle(200*s,30)for i in range(60):

lt(1)

circle(50*s,1)

circle(200*s,30)for i in range(4):

lt(1)

circle(100*s,1)

circle(200*s,50)for i in range(50):

lt(1)

circle(50*s,1)

circle(350*s,65)for i in range(40):

lt(1)

circle(70*s,1)

circle(150*s,50)for i in range(20):

rt(1)

circle(50*s,1)

circle(400*s,60)for i in range(18):

lt(1)

circle(50*s,1)

fd(250*s)

rt(150)

circle(-500*s,12)

lt(140)

circle(550*s,110)

lt(27)

circle(650*s,100)

lt(130)

circle(-300*s,20)

rt(123)

circle(220*s,57)

end_fill()

lt(120)

fd(280*s)

lt(115)

circle(300*s,33)

lt(180)

circle(-300*s,33)for i in range(70):

rt(1)

circle(225*s,1)

circle(350*s,104)

lt(90)

circle(200*s,105)

circle(-500*s,63)

penup()

goto(170*s,-330*s)

pendown()

lt(160)for i in range(20):

lt(1)

circle(2500*s,1)for i in range(220):

rt(1)

circle(250*s,1)

fillcolor('green')

penup()

goto(670*s,-480*s)

pendown()

rt(140)

begin_fill()

circle(300*s,120)

lt(60)

circle(300*s,120)

end_fill()

penup()

goto(180*s,-850*s)

pendown()

rt(85)

circle(600*s,40)

penup()

goto(-150*s,-1300*s)

pendown()

begin_fill()

rt(120)

circle(300*s,115)

lt(75)

circle(300*s,100)

end_fill()

penup()

goto(430*s,-1370*s)

pendown()

rt(30)

circle(-600*s,35)

done()

Turtle库学习笔记的更多相关文章

  1. Python turtle库学习笔记

    1.简介 Python的turtle库的易操作,对初学者十分友好.对于初学者来说,刚学编程没多久可以写出许多有趣的可视化东西,这是对学习编程极大的鼓舞,可以树立对编程学习的信心.当然turtle本身也 ...

  2. numpy, matplotlib库学习笔记

    Numpy库学习笔记: 1.array()   创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...

  3. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

  4. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  5. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

  6. C++STL标准库学习笔记(三)multiset

    C++STL标准库学习笔记(三)multiset STL中的平衡二叉树数据结构 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标 ...

  7. 对于Python turtle的学习笔记

    进一步地,我尝试学习了Python 的其中一个非常重要的函数库——turtle库 这是一个用于python绘图的函数库,方便又好用! 对于它的安装,现在我们所用的python 3的系统运用到的指令是: ...

  8. 【python】numpy库和matplotlib库学习笔记

    Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...

  9. C++STL标准库学习笔记(一)sort

    前言: 近来在学习STL标准库,做一份笔记并整理好,方便自己梳理知识.以后查找,也方便他人学习,两全其美,快哉快哉! 这里我会以中国大学慕课上北京大学郭炜老师的<程序设计与算法(一)C语言程序设 ...

随机推荐

  1. Asp.Net+JQuery.Ajax之$.post

    段时间有点跑偏,经过米老师和师傅的耐心指导,终于认识到自己的问题,现在回归常规路线,继续B/S的学习. 经过近半个月的熏陶,对JQuery慢慢的有了亲切感.当时我采访过一清,问他看完JQuery视频有 ...

  2. 图释SQL的Join

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  3. springmvc 怎么响应json数据

    springmvc 怎么响应json数据@Controller@RequestMapping("/items") class ItemsController{  @RequestM ...

  4. web设计工具

    1.工具    WYSIWYG_Web_Builder_12 2.网页    https://bootstrapstudio.io/#purchase

  5. jQuery截取字符串的几种方法

    1.取后缀 var fileDir = $("#file").val(); var suffix = fileDir.substr(fileDir.lastIndexOf(&quo ...

  6. [leetcode]364. Nested List Weight Sum II嵌套列表加权和II

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...

  7. Js学习(6) 标准库-Array对象

    Array是Js的原生对象,同时也是一个构造函数,可以用它生成新的数组 用不用new结果都一样 var arr = new Array(2); // 等同于 var arr = Array(2); 但 ...

  8. 20175234 《Java程序设计》第二周学习总结(二)

    学习内容总结 运算符与表达式 If语句.switch语句 break和continue语句 数组和for语句 IDEA的安装和调试 教材学习中的问题和解决过程 在第一次使用IDEA中出现了一些情况,在 ...

  9. entity framework core 生成 postgresql 数据库实体

    .net core 2.0 使用db first 方式生成 表 和context PM 控制台运行命令出错 Scaffold-DbContext "Host=localhost;Databa ...

  10. 基于springboot的restful接口的单元测试示例

    一.知识点 代码中对应的知识点 1.jsonPath github网址 1)操作符见文档 2)方法见文档 3)例子见文档 2.MockMvc(org.springframework.test.web. ...