python 简单的绘图工具turtle使用详解


Posted in Python onJune 21, 2017

python 简单的绘图工具turtle使用详解

目录

1. 画布(canvas)

  1.1 设置画布大小

2. 画笔

  2.1 画笔的状态
  2.2 画笔的属性
  2.3 绘图命令

3. 命令详解
4. 绘图举例

  4.1 太阳花
  4.2 绘制小蟒蛇
  4.3 绘制五角星

python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即可 import turtle

type(turtle)

>>> type(turtle)
<class 'module'>
>>> type(int)
<class 'type'>
>>>

先说明一下turtle绘图的基础知识:

1. 画布(canvas)

画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置

1.1 设置画布大小

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

如:

turtle.screensize(800, 600, "green")
turtle.screensize() #返回默认大小(400, 300)

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)

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

如:

turtle.setup(width=0.6, height=0.6)
turtle.setup(width=800, height=800, startx=100, starty=100)

2. 画笔 2.1 画笔的状态

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

2.2 画笔的属性

画笔(画笔的属性,颜色、画线的宽度)
1) turtle.pensize():设置画笔的宽度;
2) turtle.pencolor(); 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组,

>>> pencolor('brown')
  >>> tup = (0.2, 0.8, 0.55)
  >>> pencolor(tup)
  >>> pencolor()
  '#33cc8c'
3) turtle.speed(speed): 设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快

2.3 绘图命令

操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令

(1)画笔运动命令:

命令 说明 turtle.forward(distance) 向当前画笔方向移动distance像素长 turtle.backward(distance) 向当前画笔相反方向移动distance像素长度 turtle.right(degree) 顺时针移动degree° turtle.left(degree) 逆时针移动degree° turtle.pendown() 移动时绘制图形,缺省时也为绘制 turtle.goto(x,y) 将画笔移动到坐标为x,y的位置 turtle.penup() 移动时不绘制图形,提起笔,用于另起一个地方绘制时用 turtle.speed(speed) 画笔绘制的速度范围[0,10]整数 turtle.circle() 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

(2)画笔控制命令:

命令 说明 turtle.pensize(width) 绘制图形时的宽度 turtle.pencolor() 画笔颜色 turtle.fillcolor(colorstring) 绘制图形的填充颜色 turtle.color(color1, color2) 同时设置pencolor=color1, fillcolor=color2 turtle.filling() 返回当前是否在填充状态 turtle.begin_fill() 准备开始填充图形 turtle.end_fill() 填充完成; turtle.hideturtle() 隐藏箭头显示; turtle.showturtle() 与hideturtle()函数对应

(3) 全局控制命令

命令 说明 turtle.clear() 清空turtle窗口,但是turtle的位置和状态不会改变 turtle.reset() 清空窗口,重置turtle状态为起始状态 turtle.undo() 撤销上一个turtle动作 turtle.isvisible() 返回当前turtle是否可见 stamp() 复制当前图形 turtle.write(s[,font=("font-name",font_size,"font_type")]) 写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项 3. 命令详解

3.1 turtle.circle(radius, extent=None, steps=None)

描述: 以给定半径画圆
参数:
radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆
extent(弧度) (optional);
steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)

举例:

circle(50) # 整圆;
circle(50,steps=3) # 三角形;
circle(120, 180) # 半圆

4. 绘图举例 4.1 太阳花

python 简单的绘图工具turtle使用详解

import turtle as t
import time
t.color("red", "yellow")
t.speed(10)
t.begin_fill()
for _ in range(50):
  t.forward(200)
  t.left(170)
end_fill()
time.sleep(1)
4.2 绘制小蟒蛇

python 简单的绘图工具turtle使用详解

import turtle

def drawSnake(rad, angle, len, neckrad):
  for _ in range(len):
    turtle.circle(rad, angle)
    turtle.circle(-rad, angle)
  turtle.circle(rad, angle/2)
  turtle.forward(rad/2) # 直线前进
  turtle.circle(neckrad, 180)
  turtle.forward(rad/4)

if __name__ == "__main__":
  turtle.setup(1500, 1400, 0, 0)
  turtle.pensize(30) # 画笔尺寸
  turtle.pencolor("green")
  turtle.seth(-40)  # 前进的方向
  drawSnake(70, 80, 2, 15)

4.3 绘制五角星

python 简单的绘图工具turtle使用详解

import turtle
import time


turtle.pensize(5)
turtle.pencolor("yellow")
turtle.fillcolor("red")
 
turtle.begin_fill()

for _ in range(5):
  turtle.forward(200)
  turtle.right(144)
turtle.end_fill()
time.sleep(2)

turtle.penup()
turtle.goto(-150,-120)
turtle.color("violet")
turtle.write("Done", font=('Arial', 40, 'normal'))
time.sleep(1)
Python 相关文章推荐
在 Django/Flask 开发服务器上使用 HTTPS
Jul 03 Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
Python文件及目录操作实例详解
Jun 04 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
Python subprocess模块详细解读
Jan 29 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
从DataFrame中提取出Series或DataFrame对象的方法
Nov 10 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
Python实现UDP程序通信过程图解
May 15 Python
python Matplotlib模块的使用
Sep 16 Python
爬虫代理的cookie如何生成运行
Sep 22 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 #Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 #Python
python将unicode转为str的方法
Jun 21 #Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 #Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 #Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 #Python
回调函数的意义以及python实现实例
Jun 20 #Python
You might like
PHP合并静态文件详解
2014/11/14 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
Python中返回字典键的值的values()方法使用
2015/05/22 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
Python实现一个优先级队列的方法
2020/07/31 Python
python 绘制正态曲线的示例
2020/09/24 Python
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
青蓝工程实施方案
2014/03/27 职场文书
优秀学生评语大全
2014/04/25 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android