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 19 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
尝试用最短的Python代码来实现服务器和代理服务器
Jun 23 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
Apr 29 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
Jun 01 Python
用Python爬虫破解滑动验证码的案例解析
May 06 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/12 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
JavaScript OOP类与继承
2009/11/15 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
javascript常用的方法整理
2015/08/20 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
奖学金自我鉴定范文
2013/10/03 职场文书
新闻专业个人求职信
2013/12/19 职场文书
校园标语大全
2014/06/19 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
小学生安全保证书
2015/05/09 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技