python绘图模块之利用turtle画图


Posted in Python onFebruary 12, 2021

模块之turtle

小故事

前两天朋友说:“常文啊!听说你会python,那能不能用python画一些好看的图呢?”然后我特意去学了一下turtle模块,现在给大家分享一下。

一、什么是turtle

Turtle是python内嵌的绘制线、圆以及其他形状(包括文本)的图形模块。

二、turtle函数的使用

import turtle

turtle.pendown() # 放下画笔
turtle.penup() # 抬起画笔
turtle.pensize(int) # 设置画笔宽度,值为整数型
turtle.forward(float) # 讲话比向前移动一定的角度
turtle.backward(float) # 将画笔向后移动一定的角度
turtle.right(angle) # 将画笔右转一定的角度
turtle.left(angle) # #将画笔左转一定的角度
turtle.goto(x,y) # 将画笔移动到一个指定的绝对坐标
turtle.setx(x) # 设置画笔向x方向移动的距离,值为实数
turtle.sety(y) # 设置画笔向y方向移动的距离,值为实数
turtle.setheading(angle) # 设定turtle箭头的方向为指定方向,0?东 90—北
turtle.home() # 将画笔返回到原点
turtle.circle(r,ext,steps=int) # 绘制一个设置半径和阶数的圆(设置之后会绘制多边形)
turtle.dot(d,color) # 绘制一个指定直径的圆点,颜色为字符串类型
turtle.undo() #取消最后一个图操作
turtle.speed(s) # 设置画笔速度,为整数类型,且取值在1-10之间
turtle.color(‘str') # 设置画笔颜色,为字符串类型
turtle.fillcolor(‘str') # 设置填充颜色,为字符串类型
turtle.begin_fill() # 结束填充
turtle.end_fill() # 开始填充
turtle.filling() # 返回填充状态,True表示填充,False表示没有填充
turtle.clear() # 清除窗口所有内容
turtle.reset() # 清除窗口,将状态和位置复位为初始值
turtle.screensize(w,h) # 设置turtle显示的大小,并设置宽度和高度
turtle.hideturtle() # 隐藏turtle箭头
turtle.showturtle() # 显示turtle窗口
turtle.done() # 使turtle窗口不会自动消失
turtle.isvisible() # 如果turtle可见,返回turtle
turtle.write(‘str',font=(“Arial”,8,“normal”)) # 在turtle位置编写字符串s,字体由字体名、字体大小、字体类型三部分组成
turtle.position() # 获取画笔的坐标,返回一个元组,值为浮点型

案例一:基本使用

import turtle
import time


turtle.pensize(3)
turtle.showturtle() # 显示箭头
turtle.write("吴常文") # 写字符串
turtle.forward(300) # 前进100像素
turtle.color("red") # 画笔颜色改为red
turtle.left(90) # 箭头左转90度
turtle.forward(300)
turtle.goto(0,50) # 去坐标(0,50)
turtle.goto(0,0) # 回到原点
turtle.penup() # 抬笔,这样路径向上
turtle.goto(0,300)
turtle.goto(0,0)
turtle.pendown() # 下笔,这样路径向下
turtle.goto(0,50)
turtle.goto(50,50)
turtle.circle(100) # 画圆


time.sleep(5) # 睡5秒

效果图1:

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("五角星", font=('Arial', 22, 'normal'))

turtle.mainloop()

效果图2:

python绘图模块之利用turtle画图

案例三:奥运五环

#!/user/bin/python3
# --*--coding: utf-8 --*--
# @Time: 2021/2/10 12:22
# @Author:吴常文
# @File: 03奥运五环


import turtle
import time


turtle.width(10) # 宽度

turtle.color("red")
turtle.circle(50)

turtle.color("blue")
turtle.penup()
turtle.goto(120,0)
turtle.pendown()
turtle.circle(50)


turtle.color("black")
turtle.penup()
turtle.goto(240,0)
turtle.pendown()
turtle.circle(50)


turtle.color("yellow")
turtle.penup()
turtle.goto(60,-50)
turtle.pendown()
turtle.circle(50)


turtle.color("green")
turtle.penup()
turtle.goto(180,-50)
turtle.pendown()
turtle.circle(50)

time.sleep(3)

效果图3:

python绘图模块之利用turtle画图

案例四:给你一朵玫瑰花

import turtle
import time

# 设置初始位置 
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)

# 花蕊 
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10, 180)
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()

# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)

# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)

# 叶子1 
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()

turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)

# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()

turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)

turtle.circle(200, 60)

turtle.up()
turtle.goto(100, -300)
turtle.write("Send you a flower, bring you home")
time.sleep(5)

效果图4:

python绘图模块之利用turtle画图

案例五:爱心树

#!/user/bin/python3
# --*--coding: utf-8 --*--
# @Time: 2021/2/10 21:56
# @Author:吴常文
# @File: 05 爱心树


from turtle import Turtle, mainloop
import turtle


def tree(plist, l, a, f):
 """ plist是笔的列表
 l是分支
 a的长度是两个分支之间夹角的一半
 f是分支之间逐级缩短的系数。"""
 if l > 5: #
  lst = []
  for p in plist:
   p.forward(
    l) # 沿着当前的方向画画按照海龟前进的方向,向前移动指定的距离。
   q = p.clone() # 创建并返回具有相同位置、标题和turtle属性的海龟的克隆。
   p.left(a) # 以角度单位将海龟向左翻转
   q.right(
    a) # 以角度单位将海龟右转,nit是默认的角度,但可以通过degrees()和radians()函数设置。
   lst.append(p) # 将元素增加到列表的最后
   lst.append(q)
  tree(lst, l * f, a, f)


def main():
 p = Turtle()
 p.color("red")
 p.pensize(4)
 # p.setundobuffer(None)
 p.hideturtle() # 让乌龟隐形。这是一个好主意,当你在做一些复杂的绘图时,
 # 因为把乌龟藏起来能明显加快绘图速度。
 # p.speed(10)
 # p.getscreen().tracer(1,0)#Returtle.write("You are the secret of my heart")
 p.speed(4)
 # 然后可以为该对象调用TurtleScreen方法。
 p.left(90) # 方向以角度单位将海龟向左翻转。 调整画笔

 p.penup() # 向上拉笔——移动时不绘图。
 p.goto(0,
   -200) # 移动海龟到一个绝对位置。如果笔放下了,画一条线。不要改变海龟的方向。
 p.pendown() # 向下拉笔——移动时绘图 这三条语句是一个组合相当于先把笔收起来再移动到指定位置,再把笔放下开始画
 # 否则turtle一移动就会自动的把线画出来

 # t = tree([p], 200, 65, 0.6375)
 t = tree([p], 200, 65, 0.6375)
 turtle.down()
 turtle.goto(-80, 70)

 turtle.write("There's a heart for you")
 turtle.done()


main()

效果图5:

python绘图模块之利用turtle画图

案例六:给你一颗爱心

#!/user/bin/python3
# --*--coding: utf-8 --*--
# @Time: 2021/2/10 22:07
# @Author:吴常文
# @File: 06 爱心

import turtle
import time


def func():
 for i in range(200):
  turtle.right(1)
  turtle.forward(1)


turtle.color('red', 'pink')
turtle.pensize(2)
turtle.speed(10)
turtle.goto(0, 0)
turtle.begin_fill()
turtle.left(140)

turtle.forward(112)
func()
turtle.left(120)
func()

turtle.forward(112)
turtle.end_fill()
turtle.pensize(5)
turtle.up()
turtle.goto(-80, 122.7)
turtle.left(70)
turtle.down()

# turtle.forward(0)
turtle.up()
turtle.goto(100, -10)
turtle.write("There's a heart for you")

turtle.done()
time.sleep(3)

效果图6:

python绘图模块之利用turtle画图

案例七:五星红旗

import turtle as t


# 位移函数
def Skip(t,x,y):
 t.penup()
 t.goto(x,y)
 t.pendown()


# 绘制五星红旗
def draw(t,x,y,z):
 t.begin_fill()
 for i in range(x):
  t.forward(y)
  t.left(z)
 t.end_fill()

# 画笔基础设置
t.screensize(1200,800)
t.pensize(5)
t.hideturtle()
t.speed(5)
t.pencolor("red")

# 画笔移动
Skip(t,0,-200)

# 绘制国旗
t.fillcolor("red")
t.begin_fill()
t.forward(300)
t.left(90)
t.forward(400)
t.left(90)
t.forward(600)
t.left(90)
t.forward(400)
t.left(90)
t.forward(300)
t.end_fill()

# 画笔移动
Skip(t,-250,115)

# 绘制大五角星
t.pencolor("yellow")
t.fillcolor("yellow")

t.begin_fill()
for i in range(5):
 t.forward(100)
 t.right(144)
t.end_fill()

"""第一颗副星"""
# 画笔移动
Skip(t,-120,10)
# 绘制小五星
draw(t,5,30,144)


"""第二颗副星"""
# 画笔移动
Skip(t,-80,50)
# 绘制小五星
draw(t,5,30,144)

"""第三颗副星"""
# 画笔移动
Skip(t,-80,110)
# 绘制小五星
draw(t,5,30,144)

"""第四颗副星"""
# 画笔移动
Skip(t,-120,150)
# 绘制小五星
draw(t,5,30,144)
t.done()

效果图7:

python绘图模块之利用turtle画图

总结

到此这篇关于python模块教程之利用turtle画图的文章就介绍到这了,更多相关python模块之turtle画图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的函数嵌套的使用方法
Jan 24 Python
Python中为feedparser设置超时时间避免堵塞
Sep 28 Python
python正则表达式之作业计算器
Mar 18 Python
浅析Python中的多条件排序实现
Jun 07 Python
python 删除列表里所有空格项的方法总结
Apr 18 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
python视频按帧截取图片工具
Jul 23 Python
将pytorch转成longtensor的简单方法
Feb 18 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
Apr 14 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
Python列表的深复制和浅复制示例详解
Feb 12 #Python
Python就将所有的英文单词首字母变成大写
Feb 12 #Python
详解Java中一维、二维数组在内存中的结构
Feb 11 #Python
SpringBoot首页设置解析(推荐)
Feb 11 #Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 #Python
详解python日志输出使用配置文件格式
Feb 10 #Python
python 获取域名到期时间的方法步骤
Feb 10 #Python
You might like
杏林同学录(六)
2006/10/09 PHP
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python二分查找算法的递归实现方法
2016/05/12 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
荷兰本土平价百货:HEMA
2017/10/23 全球购物
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
上班玩游戏检讨书
2014/02/07 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
科学育儿宣传标语
2014/10/08 职场文书
2014年纠风工作总结
2014/12/08 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
python基础之while循环语句的使用
2021/04/20 Python
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
idea下配置tomcat避坑详解
2022/04/12 Servers