想学画画?python满足你!


Posted in Python onDecember 24, 2020

python中的绘图工具有不少,比如Matplotlib等等,但这些只能用来画表格,今天我们来介绍一款可以用来画画的库——turtle。

一、绘图原理

我们通过控制初始位置为(0,0)的海龟进行移动,根据一组函数指令的控制,在平面坐标系中移动,从而在它爬行的路径上绘制了图形。

二、开始绘图

turtle是python自带的库,我们直接import导入即可

import turtle

设置绘图区域属性

绘图区域背景色的设置

turtle.bgcolor('blue')

想学画画?python满足你!

选择想要的颜色即可

绘图区域大小设置

turtle.setup(width=200,height=100)

参数:

width, height: 

输入宽和高为整数时, 表示像素;

为小数时, 表示占据电脑屏幕的比例。

画笔绘制图形

让我们先简单的画一条直线

turtle.forward(100)

想学画画?python满足你!

forward()是turtle的内置函数,表示从原点向前进多少距离。我们还可以控制画笔的角度让他转弯。与之对应的是backward(),后退多少距离

turtle.backward(100)
turtle.left(60)
turtle.forward(100)

这里的left()就表示画笔的转弯方向和角度了,相应的right则为向右转。

想学画画?python满足你!

如图我们后退了100的距离然后向左偏转60°又前进了100距离。其他常用参数请参考下面的表格

画笔运动函数

函数 描述
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() 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

画笔参数

命令 说明
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()函数对应

全局控制命令

命令 说明
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的参数也是可选项

三、for循环语句

如果我们要画一个正方形按照上边的方法代码为

import turtle

turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)

一个简单的四边形就要如此重复,绘制更复杂的图形还这样做的话就显得不科学了,这时候我们就要用到for循环了。使用for循环的语句优化过的代码为

totalTimes=4                       
for times in range(totalTimes):
    turtle.forward(100)
    turtle.left(90)

想学画画?python满足你!

四、简单示例

绘制五角星

import turtle

t=turtle.Pen() #获得画笔
t.hideturtle() #隐藏箭头
t.begin_fill() #填充图形
for x in range(1, 6):
    t.forward(100)
    t.left(216) #在这里先向右直行,然后左转216°(左下,正五角星度数180/5=36°)
t.end_fill() #填充完成

想学画画?python满足你!

绘制樱花树

import turtle as T
import random
import time
 
# 画樱花的躯干(60,t)
def Tree(branch, t):
  time.sleep(0.0005)
  if branch > 3:
    if 8 <= branch <= 12:
      if random.randint(0, 2) == 0:
        t.color('snow') # 白
      else:
        t.color('lightcoral') # 淡珊瑚色
      t.pensize(branch / 3)
    elif branch < 8:
      if random.randint(0, 1) == 0:
        t.color('snow')
      else:
        t.color('lightcoral') # 淡珊瑚色
      t.pensize(branch / 2)
    else:
      t.color('sienna') # 赭(zhě)色
      t.pensize(branch / 10) # 6
    t.forward(branch)
    a = 1.5 * random.random()
    t.right(20 * a)
    b = 1.5 * random.random()
    Tree(branch - 10 * b, t)
    t.left(40 * a)
    Tree(branch - 10 * b, t)
    t.right(20 * a)
    t.up()
    t.backward(branch)
    t.down()
 
# 掉落的花瓣
def Petal(m, t):
  for i in range(m):
    a = 200 - 400 * random.random()
    b = 10 - 20 * random.random()
    t.up()
    t.forward(b)
    t.left(90)
    t.forward(a)
    t.down()
    t.color('lightcoral') # 淡珊瑚色
    t.circle(1)
    t.up()
    t.backward(a)
    t.right(90)
    t.backward(b)
 
# 绘图区域
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle() # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat') # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
 
# 画樱花的躯干
Tree(60, t)
# 掉落的花瓣
Petal(200, t)
w.exitonclick()

想学画画?python满足你!

更多关于python的文章,欢迎关注python客栈。

想学画画?python满足你!

以上就是想学画画?python满足你!的详细内容,更多关于python 画画的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
Pandas中把dataframe转成array的方法
Apr 13 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
python write无法写入文件的解决方法
Jan 23 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
Python Pandas 箱线图的实现
Jul 23 Python
Python基于WordCloud制作词云图
Nov 29 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 #Python
用python获取txt文件中关键字的数量
Dec 24 #Python
举例讲解Python装饰器
Dec 24 #Python
python 基于opencv操作摄像头
Dec 24 #Python
python 基于selenium实现鼠标拖拽功能
Dec 24 #Python
python实现简单猜单词游戏
Dec 24 #Python
Python 虚拟环境工作原理解析
Dec 24 #Python
You might like
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Django中间件基础用法详解
2019/07/18 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
资产经营总监岗位职责范文
2013/12/01 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
怎么写工作检讨书
2014/11/16 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
导游词之山西-五老峰
2019/10/07 职场文书