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中的静态方法与类成员方法
Feb 28 Python
python实现外卖信息管理系统
Jan 11 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
python写入文件自动换行问题的方法
Jul 05 Python
pandas中的series数据类型详解
Jul 06 Python
pandas 如何分割字符的实现方法
Jul 29 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
OpenCV 之按位运算举例解析
Jun 19 Python
python中scrapy处理项目数据的实例分析
Nov 22 Python
Anaconda配置各版本Pytorch的实现
Aug 07 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
如何去掉文章里的 html 语法
2006/10/09 PHP
文章推荐系统(三)
2006/10/09 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
如何实现动态删除javascript函数
2007/05/27 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
Python中的choice()方法使用详解
2015/05/15 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
《乡下孩子》教学反思
2014/04/17 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
幽默导游词开场白
2015/05/29 职场文书
Mysql Show Profile
2021/04/05 MySQL
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
pycharm代码删除恢复的方法
2021/06/26 Python
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis