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聊天程序实例代码分享
Nov 18 Python
Python实现多线程抓取妹子图
Aug 08 Python
python的mysqldb安装步骤详解
Aug 14 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
使用python Telnet远程登录执行程序的方法
Jan 26 Python
Python中关于浮点数的冷知识
Sep 22 Python
python实现两个字典合并,两个list合并
Dec 02 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
Python计算信息熵实例
Jun 18 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 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实现网上点歌(二)
2006/10/09 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
php中如何执行linux命令详解
2018/11/06 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
javascript读取RSS数据
2007/01/20 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
浅谈django的render函数的参数问题
2018/10/16 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
python和js交互调用的方法
2020/06/23 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
入党积极分子介绍信
2014/01/17 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
社区党员公开承诺书
2014/08/30 职场文书
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang
python读取mat文件生成h5文件的实现
2022/07/15 Python