python绘图模块之利用turtle画图
作者:小常文 发布时间:2022-08-13 01:17:19
标签:python,turtle,画图
模块之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:
案例二:五角星
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:
案例三:奥运五环
#!/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:
案例四:给你一朵玫瑰花
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:
案例五:爱心树
#!/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:
案例六:给你一颗爱心
#!/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:
案例七:五星红旗
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:
总结
来源:https://blog.csdn.net/qq_41405475/article/details/113786790
0
投稿
猜你喜欢
- 1、Xmind用例编写规范1:需求大模块2:大模块中的小模块(需要根据需求来看需要多少层)3:用例等级和用例名称用例等级(转换成Excel文
- 我们的每期话题,团队在内部都会通过邮件进行一番讨论,随着讨论的激烈,往往能碰撞出很多有意义的观点,因此,将讨论内容分享出来,有兴趣的朋友可以
- 导语轻松瘦 | 和闺蜜减肥的日常,谁说闺蜜是减肥路上的一座山?哈喽!大家好!我是木木子吖~小编有一个闺蜜,还是同一所学校读书毕业的,这体重在
- 幸运草又名四叶草,一般指四叶的苜蓿、或车轴草。在十万株苜蓿草中,你可能只会发现一株是四叶草,机会率大约是十万分之一。因此四叶草是国际公认的幸
- session的超时时间设置settings中SESSION_COOKIE_AGE=60*30 30分钟。SESSION_EXPIRE_AT
- 简介subprocess是子流程,即进程的意思,该模块可以启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。常用方法和接口
- 通过第三方BeautifulSoup库来爬取op.gg网页静态数据主要思路op.gg网站网站以出场率高低排名,并且列出对位胜率,在高出场率的
- 在给客户做个程序时,突然遇到个问题,就是产品页用户提交视频播放文件时,如何根据提交的网址内的视频格式进行正确的播放呢....郁闷了一会,想好
- <% Response.Buffer = True Server.ScriptTimeOut=9999999&
- Django 分页功能的实现,供大家参考,具体内容如下创建项目创建APP,添加APP这些就不在多说我们这次重点来看到视图函数下面是路由设置视
- 简介除ide的执行方式外,命令行的方式执行Python脚本是参数化程序执行的一种常见且简单的方法,正确处理命令行参数,可以提供给包含某种参数
- 1、装饰器装饰器(Decorator):从字面上理解,就是装饰对象的器件。可以在不修改原有代码的情况下,为被装饰的对象增加新的功能或者附加限
- 摘要: 前端框架 Bootstrap 的模态对话框,可以使用 remote 选项指定一个 URL,这样对话框在第一次弹出的时候就会自动从这个
- 前言在对DataFrame数据进行处理时,存在需要对数据内容进行遍历的场景。因此记录一下按照行,列遍历的几种方式。一、按行遍历1. 使用lo
- 前面学习过Meanshift算法,在观察这个结果标记时,会发现有这样一个问题,如下图:汽车比较远时,用一个很小的窗口就可以把它框住,这是符合
- 让长字符自动换行 (比如 URL 和 Email地址) 目的:让很长的字符串,能自动换行,但是不要把短的单词从中间断开。方法如下:<s
- 一、实验目的实现学生选课系统二、实验环境Python3.6pymysql(Python连接MySQL)xlrd(操作Excel)三、程序结构
- 四年前写的一个内容管理系统,应用在公司内部网上,昨天DBA说其中的SQL语句未使用参数化的调用,导致服务器负担加重,资源占用大。并列出了几个
- 写在前面大家好,我是第一次python学了一个学期,期末要完成一个毕业生信息管理系统大作业的小韩了,由于上次没有仔细看开发实现的要求,实现了
- 在上篇博客中,我们已经实现了水平投影和垂直投影图的绘制。接下来,我们可以根据获得的投影数据进行图像的分割,该法用于文本分割较多,所以此处依然