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 相关文章推荐
Python下载指定页面上图片的方法
May 12 Python
Python 数据结构之旋转链表
Feb 25 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
简单了解python调用其他脚本方法实例
Mar 26 Python
python 等差数列末项计算方式
May 03 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
python程序如何进行保存
Jul 03 Python
用python获取txt文件中关键字的数量
Dec 24 Python
python实现图片转字符画的完整代码
Feb 21 Python
Python实现我的世界小游戏源代码
Mar 02 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+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
很好用的PHP数据库类
2009/05/27 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python保存数据到本地文件的方法
2018/06/23 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
vscode调试django项目的方法
2020/08/06 Python
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
中专生职业生涯规划书范文
2014/01/10 职场文书
大学军训感言600字
2014/02/25 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
亮剑观后感600字
2015/06/05 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA
nginx 配置指令之location使用详解
2022/05/25 Servers