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抓取京东图书评论数据
Aug 31 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 Python
深度学习详解之初试机器学习
Apr 14 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下几种删除目录的方法总结
2007/08/19 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
php常用图片处理类
2016/03/16 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
python中global与nonlocal比较
2014/11/21 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
浅析matlab中imadjust函数
2020/02/27 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
python生成word合同的实例方法
2021/01/12 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
计算机相关专业自荐信
2014/07/02 职场文书
小学生作文批改评语
2014/12/25 职场文书
高中美术教学反思
2016/02/17 职场文书
python保存图片的四个常用方法
2022/02/28 Python
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python