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中Random和Math模块学习笔记
May 18 Python
Python全局变量用法实例分析
Jul 19 Python
Python正则表达式经典入门教程
May 22 Python
Python反射用法实例简析
Dec 22 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
Python标准库shutil用法实例详解
Aug 13 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
Python基础之函数基本用法与进阶详解
Jan 02 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
python打包生成so文件的实现
Oct 30 Python
Python实现疫情地图可视化
Feb 05 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
第三节--定义一个类
2006/11/16 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
vue实现记事本功能
2019/06/26 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
通过python3实现投票功能代码实例
2019/09/26 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
出生医学证明样本
2014/01/17 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
学习经验交流会主持词
2014/04/01 职场文书
欢迎标语大全
2014/06/21 职场文书
物业消防安全责任书
2014/07/23 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
Python包argparse模块常用方法
2021/06/04 Python
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
CSS3实现指纹特效代码
2022/03/17 HTML / CSS