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实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
django框架创建应用操作示例
Sep 26 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
Python基于requests库爬取网站信息
Mar 02 Python
python如何保存文本文件
Jun 07 Python
使用Python pip怎么升级pip
Aug 11 Python
python 生成器需注意的小问题
Sep 29 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
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
ant design实现圈选功能
2019/12/17 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python常用列表数据结构小结
2014/08/06 Python
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
Python实现的RSS阅读器实例
2015/07/25 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Python可迭代对象操作示例
2019/05/07 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
巴基斯坦购物网站:Goto
2019/03/11 全球购物
旅游节目策划方案
2014/05/26 职场文书
庆六一活动总结
2014/08/29 职场文书
解决Redis启动警告问题
2022/02/24 Redis
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫