前言

turtle(海龟库)是python的一个绘制图像的函数库,它就像海龟一样,给定指令和坐标,在画布坐标系中一步一步绘制出你想要的图形,比如小猪佩奇、哆啦A梦、皮卡丘等。

               

                   

安装

看着这么多卡通图形,博主就安奈不住自己想要安装尝试绘制卡通图,python3.6环境中输入了万能安装指令pip

pip install turtle

结果竟然失败了,报错如下

C:\Users\XXX>pip install turtle
Collecting turtle
  Downloading https://files.pythonhosted.org/packages/ff/f0/21a42e9e424d24bdd0e509d5ed3c7dfb8f47d962d9c044dba903b0b4a26f/turtle-0.0.2.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\XXX\AppData\Local\Temp\pip-install-qm1_x9jy\turtle\setup.py", line 40
        except ValueError, ve:
                         ^
    SyntaxError: invalid syntax

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\XXX\AppData\Local\Temp\pip-install-qm1_x9jy\turtle\

提示语法错误

先按照给定的tar.gz函数包的下载链接输入浏览器进行下载(每个人可能不一样)

https://files.pythonhosted.org/packages/ff/f0/21a42e9e424d24bdd0e509d5ed3c7dfb8f47d962d9c044dba903b0b4a26f/turtle-0.0.2.tar.gz

然后,解压压缩包成文件夹,打开其中的setup.py

修改第40行代码如下(其实就是增加了括号,python2的语法格式是没有括号的,但是python3没有括号就会报错,就像print函数)

except (ValueError, ve):

修改好之后,再用pip安装,此处 pip install 后面接的是你修改好的turtle文件夹所在位置

pip install C:\Users\XXX\Desktop\turtle-0.0.2

显示安装成功,下面测试一下是否可用, 进入python3环境,输入

import turtle

无报错,证明安装成功。

Turtle库基础知识

1.画布(canvas)

画布就是turtle为我们展开用于绘图区域默认大小(400, 300),我们可以设置它的大小和初始位置。

2.画笔(pen)

2.1画笔的状态

在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

2.2 画笔的属性

画笔(画笔的属性,颜色、画线的宽度等)

  • turtle.pensize():设置画笔的宽度;
  • turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
  • turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

2.3 绘图命令

操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。

2.3.1 画笔运动命令:

命令 说明
turtle.home() 将turtle移动到起点(0,0)和向东
turtle.speed(speed) 画笔绘制的速度范围[0,10]整数
turtle.forward(distance) 向当前画笔方向移动distance像素长
turtle.backward(distance) 向当前画笔相反方向移动distance像素长度
turtle.right(degree) 顺时针移动degree°
turtle.left(degree) 逆时针移动degree°
turtle.pendown() 移动时绘制图形放下笔,,默认绘制
turtle.penup() 移动时不绘制图形,提起笔,用于另起一个地方绘制时用
turtle.circle(r,extent,step) 绘制一个指定半径、弧度范围、阶数(正多边形)的圆
turtle.dot(diameter,color) 绘制一个指定直径和颜色的圆

2.3.2 画笔控制命令:

命令 说明
turtle.pencolor() 画笔颜色
turtle.pensize(width) 画笔宽度(绘制图形时的宽度)
turtle.color(color1, color2) 同时设置pencolor=color1, fillcolor=color2
turtle.filling() 返回当前是否在填充状态
turtle.begin_fill() 准备开始填充图形
turtle.end_fill() 填充完成
turtle.hideturtle() 隐藏画笔的turtle形状
turtle.showturtle() 显示画笔的turtle形状

2.3.3 全局控制命令

命令 说明
turtle.clear() 清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset() 清空窗口,重置turtle状态为起始状态
turtle.undo() 取消最后一个图的操作
turtle.isvisible() 返回当前turtle是否可见
turtle.stamp() 复制当前图形
turtle.write(s, [font=("font-name",font_size,"font_type")]) 写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

2.2.3其他命令

命令 说明
turtle.mainloop()或turtle.done() 启动事件循环 -调用Tkinter的mainloop函数。必须是乌龟图形程序中的最后一个语句。
turtle.mode(mode=None) 设置乌龟模式(“standard”,“logo(向北或向上)”或“world()”)并执行重置。如果没有给出模式,则返回当前模式。
turtle.undo() 取消最后一个图的操作
turtle.isvisible() 返回当前turtle是否可见
turtle.stamp() 复制当前图形
turtle.write(s, [font=("font-name",font_size,"font_type")])

写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

绘图实例

接下来尝试一下绘制卡通图形。

小猪佩奇

import turtle as tt.pensize(4)
t.hideturtle()
t.colormode(255)
t.color((255,155,192),"pink")
t.setup(840,500)
t.speed(10)#鼻子
t.pu()
t.goto(-100,100)
t.pd()
t.seth(-30)
t.begin_fill()
a=0.4
for i in range(120):if 0<=i<30 or 60<=i<90:a=a+0.08t.lt(3) #向左转3度t.fd(a) #向前走a的步长else:a=a-0.08t.lt(3)t.fd(a)
t.end_fill()t.pu()
t.seth(90)
t.fd(25)
t.seth(0)
t.fd(10)
t.pd()
t.pencolor(255,155,192)
t.seth(10)
t.begin_fill()
t.circle(5)
t.color(160,82,45)
t.end_fill()t.pu()
t.seth(0)
t.fd(20)
t.pd()
t.pencolor(255,155,192)
t.seth(10)
t.begin_fill()
t.circle(5)
t.color(160,82,45)
t.end_fill()#头
t.color((255,155,192),"pink")
t.pu()
t.seth(90)
t.fd(41)
t.seth(0)
t.fd(0)
t.pd()
t.begin_fill()
t.seth(180)
t.circle(300,-30)
t.circle(100,-60)
t.circle(80,-100)
t.circle(150,-20)
t.circle(60,-95)
t.seth(161)
t.circle(-300,15)
t.pu()
t.goto(-100,100)
t.pd()
t.seth(-30)
a=0.4
for i in range(60):if 0<=i<30 or 60<=i<90:a=a+0.08t.lt(3) #向左转3度t.fd(a) #向前走a的步长else:a=a-0.08t.lt(3)t.fd(a)
t.end_fill()#耳朵
t.color((255,155,192),"pink")
t.pu()
t.seth(90)
t.fd(-7)
t.seth(0)
t.fd(70)
t.pd()
t.begin_fill()
t.seth(100)
t.circle(-50,50)
t.circle(-10,120)
t.circle(-50,54)
t.end_fill()t.pu()
t.seth(90)
t.fd(-12)
t.seth(0)
t.fd(30)
t.pd()
t.begin_fill()
t.seth(100)
t.circle(-50,50)
t.circle(-10,120)
t.circle(-50,56)
t.end_fill()#眼睛
t.color((255,155,192),"white")
t.pu()
t.seth(90)
t.fd(-20)
t.seth(0)
t.fd(-95)
t.pd()
t.begin_fill()
t.circle(15)
t.end_fill()t.color("black")
t.pu()
t.seth(90)
t.fd(12)
t.seth(0)
t.fd(-3)
t.pd()
t.begin_fill()
t.circle(3)
t.end_fill()t.color((255,155,192),"white")
t.pu()
t.seth(90)
t.fd(-25)
t.seth(0)
t.fd(40)
t.pd()
t.begin_fill()
t.circle(15)
t.end_fill()t.color("black")
t.pu()
t.seth(90)
t.fd(12)
t.seth(0)
t.fd(-3)
t.pd()
t.begin_fill()
t.circle(3)
t.end_fill()#腮
t.color((255,155,192))
t.pu()
t.seth(90)
t.fd(-95)
t.seth(0)
t.fd(65)
t.pd()
t.begin_fill()
t.circle(30)
t.end_fill()#嘴
t.color(239,69,19)
t.pu()
t.seth(90)
t.fd(15)
t.seth(0)
t.fd(-100)
t.pd()
t.seth(-80)
t.circle(30,40)
t.circle(40,80)#身体
t.color("red",(255,99,71))
t.pu()
t.seth(90)
t.fd(-20)
t.seth(0)
t.fd(-78)
t.pd()
t.begin_fill()
t.seth(-130)
t.circle(100,10)
t.circle(300,30)
t.seth(0)
t.fd(230)
t.seth(90)
t.circle(300,30)
t.circle(100,3)
t.color((255,155,192),(255,100,100))
t.seth(-135)
t.circle(-80,63)
t.circle(-150,24)
t.end_fill()#手
t.color((255,155,192))
t.pu()
t.seth(90)
t.fd(-40)
t.seth(0)
t.fd(-27)
t.pd()
t.seth(-160)
t.circle(300,15)
t.pu()
t.seth(90)
t.fd(15)
t.seth(0)
t.fd(0)
t.pd()
t.seth(-10)
t.circle(-20,90)t.pu()
t.seth(90)
t.fd(30)
t.seth(0)
t.fd(237)
t.pd()
t.seth(-20)
t.circle(-300,15)
t.pu()
t.seth(90)
t.fd(20)
t.seth(0)
t.fd(0)
t.pd()
t.seth(-170)
t.circle(20,90)#脚
t.pensize(10)
t.color((240,128,128))
t.pu()
t.seth(90)
t.fd(-75)
t.seth(0)
t.fd(-180)
t.pd()
t.seth(-90)
t.fd(40)
t.seth(-180)
t.color("black")
t.pensize(15)
t.fd(20)t.pensize(10)
t.color((240,128,128))
t.pu()
t.seth(90)
t.fd(40)
t.seth(0)
t.fd(90)
t.pd()
t.seth(-90)
t.fd(40)
t.seth(-180)
t.color("black")
t.pensize(15)
t.fd(20)#尾巴
t.pensize(4)
t.color((255,155,192))
t.pu()
t.seth(90)
t.fd(70)
t.seth(0)
t.fd(95)
t.pd()
t.seth(0)
t.circle(70,20)
t.circle(10,330)
t.circle(70,30)
t.done()

哆啦A梦

import turtledef flyTo(x, y):turtle.penup()turtle.goto(x, y)turtle.pendown()def drawEye():turtle.tracer(False)a = 2.5for i in range(120):if 0 <= i < 30 or 60 <= i < 90:a -= 0.05else:a += 0.05turtle.left(3)turtle.fd(a)turtle.tracer(True)def beard():""" 画胡子, 一共六根"""# 左边第一根胡子flyTo(-37, 135)turtle.seth(165)turtle.fd(60)# 左边第二根胡子flyTo(-37, 125)turtle.seth(180)turtle.fd(60)# 左边第三根胡子flyTo(-37, 115)turtle.seth(193)turtle.fd(60)# 右边第一根胡子flyTo(37, 135)turtle.seth(15)turtle.fd(60)# 右边第二根胡子flyTo(37, 125)turtle.seth(0)turtle.fd(60)# 右边第三根胡子flyTo(37, 115)turtle.seth(-13)turtle.fd(60)def drawRedScarf():""" 画围巾"""turtle.fillcolor("red")  # 填充颜色turtle.begin_fill()turtle.seth(0)  # 朝向右turtle.fd(200)  # 前进10个单位turtle.circle(-5, 90)turtle.fd(10)turtle.circle(-5, 90)turtle.fd(207)turtle.circle(-5, 90)turtle.fd(10)turtle.circle(-5, 90)turtle.end_fill()def drawMouse():flyTo(5, 148)turtle.seth(270)turtle.fd(100)turtle.seth(0)turtle.circle(120, 50)turtle.seth(230)turtle.circle(-120, 100)def drawRedNose():flyTo(-10, 158)turtle.fillcolor("red")  # 填充颜色turtle.begin_fill()turtle.circle(20)turtle.end_fill()def drawBlackdrawEye():turtle.seth(0)flyTo(-20, 195)turtle.fillcolor("#000000")  # 填充颜色turtle.begin_fill()turtle.circle(13)turtle.end_fill()turtle.pensize(6)flyTo(20, 205)turtle.seth(75)turtle.circle(-10, 150)turtle.pensize(3)flyTo(-17, 200)turtle.seth(0)turtle.fillcolor("#ffffff")turtle.begin_fill()turtle.circle(5)turtle.end_fill()flyTo(0, 0)def drawFace():""""""turtle.forward(183)  # 前行183个单位turtle.fillcolor("white")  # 填充颜色为白色turtle.begin_fill()  # 开始填充turtle.left(45)  # 左转45度turtle.circle(120, 100)  # 右边那半边脸turtle.seth(90)  # 朝向向上drawEye()  # 画右眼睛turtle.seth(180)  # 朝向左turtle.penup()  # 抬笔turtle.fd(60)  # 前行60turtle.pendown()  # 落笔turtle.seth(90)  # 朝向上drawEye()  # 画左眼睛turtle.penup()  # 抬笔turtle.seth(180)  # 朝向左turtle.fd(64)  # 前进64turtle.pendown()  # 落笔turtle.seth(215)  # 修改朝向turtle.circle(120, 100)  # 左边那半边脸turtle.end_fill()  #def drawHead():""" 画了一个被切掉下半部分的圆"""turtle.penup()  # 抬笔turtle.circle(150, 40)  # 画圆, 半径150,圆周角40turtle.pendown()  # 落笔turtle.fillcolor("#00a0de")  # 填充色turtle.begin_fill()  # 开始填充turtle.circle(150, 280)  # 画圆,半径150, 圆周角280turtle.end_fill()def drawAll():drawHead()drawRedScarf()drawFace()drawRedNose()drawMouse()beard()flyTo(0, 0)turtle.seth(0)turtle.penup()turtle.circle(150, 50)turtle.pendown()turtle.seth(30)turtle.fd(40)turtle.seth(70)turtle.circle(-30, 270)turtle.fillcolor("#00a0de")turtle.begin_fill()turtle.seth(230)turtle.fd(80)turtle.seth(90)turtle.circle(1000, 1)turtle.seth(-89)turtle.circle(-1000, 10)turtle.seth(180)turtle.fd(70)turtle.seth(90)turtle.circle(30, 180)turtle.seth(180)turtle.fd(70)turtle.seth(100)turtle.circle(-1000, 9)turtle.seth(-86)turtle.circle(1000, 2)turtle.seth(230)turtle.fd(40)turtle.circle(-30, 230)turtle.seth(45)turtle.fd(81)turtle.seth(0)turtle.fd(203)turtle.circle(5, 90)turtle.fd(10)turtle.circle(5, 90)turtle.fd(7)turtle.seth(40)turtle.circle(150, 10)turtle.seth(30)turtle.fd(40)turtle.end_fill()# 左手turtle.seth(70)turtle.fillcolor("#FFFFFF")turtle.begin_fill()turtle.circle(-30)turtle.end_fill()# 脚flyTo(103.74, -182.59)turtle.seth(0)turtle.fillcolor("#FFFFFF")turtle.begin_fill()turtle.fd(15)turtle.circle(-15, 180)turtle.fd(90)turtle.circle(-15, 180)turtle.fd(10)turtle.end_fill()flyTo(-96.26, -182.59)turtle.seth(180)turtle.fillcolor("#FFFFFF")turtle.begin_fill()turtle.fd(15)turtle.circle(15, 180)turtle.fd(90)turtle.circle(15, 180)turtle.fd(10)turtle.end_fill()# 右手flyTo(-133.97, -91.81)turtle.seth(50)turtle.fillcolor("#FFFFFF")turtle.begin_fill()turtle.circle(30)turtle.end_fill()# 口袋flyTo(-103.42, 15.09)turtle.seth(0)turtle.fd(38)turtle.seth(230)turtle.begin_fill()turtle.circle(90, 260)turtle.end_fill()flyTo(5, -40)turtle.seth(0)turtle.fd(70)turtle.seth(-90)turtle.circle(-70, 180)turtle.seth(0)turtle.fd(70)# 铃铛flyTo(-103.42, 15.09)turtle.fd(90)turtle.seth(70)turtle.fillcolor("#ffd200")turtle.begin_fill()turtle.circle(-20)turtle.end_fill()turtle.seth(170)turtle.fillcolor("#ffd200")turtle.begin_fill()turtle.circle(-2, 180)turtle.seth(10)turtle.circle(-100, 22)turtle.circle(-2, 180)turtle.seth(180 - 10)turtle.circle(100, 22)turtle.end_fill()flyTo(-13.42, 15.09)turtle.seth(250)turtle.circle(20, 110)turtle.seth(90)turtle.fd(15)turtle.dot(10)flyTo(0, -150)drawBlackdrawEye()def main():turtle.screensize(800, 6000, "#F0F0F0")turtle.pensize(3)turtle.speed(9)drawAll()if __name__ == "__main__":main()turtle.mainloop()

更多turtle代码请参考github项目地址

https://github.com/KaguraTyan/turtle

turtle安装以及python3安装报错解决方案,用python画小猪佩奇相关推荐

  1. Interproscan linux版本详细安装教程及运行报错解决方案

    解决问题:interproscan 软件 在Linux中配置(个人经验,仅供参考~) 文章目录 @[TOC](文章目录) 一.参考文档 二.需要软件 Software requirements: 三. ...

  2. anaconda安装及conda upgrade-all报错解决方案

    conda upgrade --all 报错问题解决参考 下载时候直接去官网安装了最新版本的,出错时候也不想去安装一个旧版本,就在不断调. anaconda安装教程 换了一台电脑,在安装anacond ...

  3. LayaBox IDE 安装后执行项目报错解决方案的一些记录

    1.打开IDE后出现"路径xxx未指向有效地tsserver安装.将禁用TypeScript语言功能."提示: 这是由于杀毒软件吧ts对应的js文件作为病毒删除导致的,一般到杀毒软 ...

  4. ubuntu22.04安装网易云音乐报错解决方案

    文章目录 Ubuntu 22.04.1 LTS安装网易云音乐(官网下载deb安装) 运行报错 解决办法 总结 Ubuntu 22.04.1 LTS安装网易云音乐(官网下载deb安装) 运行报错 尝试手 ...

  5. 用python画小猪佩奇代码_用python画个小猪佩奇(turtle示例源码)

    [实例简介]来副小猪佩奇,用python画个小猪佩奇 [实例截图] [核心代码]# coding:utf-8 import turtle as t def nose(x,y):#鼻子 t.pu() t ...

  6. centos安装过程中gpt报错解决方案

    解决方法: 在安装界面中按 "ctrl+alt+f2"符进入字界面 fdisk -l             //此时会看到引导分区结尾上的标记是GPT 显示是/dev/sda p ...

  7. python安装pylad报错_用python画出某“毒王”的动态路线图

    河南前几天出现1例输入性新冠肺炎确诊病例 ,打破了连续十几天"0"增加的记录,也把河南人民重新带入疫情的黑暗恐怖之中 .为了让大家的清晰地掌握该"毒王"的行程, ...

  8. 使用Python画小猪佩奇(turtle库)

    这坐标要算多久???尬笑!? turtle(乌龟)库,在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟. 这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面 ...

  9. 用python画小猪佩奇代码_Python turtle模块实例:绘制小猪佩奇(上)

    在上一节教程中,我们已经对小猪佩奇进行了分析,现在我们就来进行绘制. 设置画布和画笔 首先,我们定义一个 setting() 函数,用它来设置画布和画笔.setting() 函数的代码如下所示. de ...

最新文章

  1. linux安装静默安装was7,WAS7.0 - 安装并升级WAS7.0.0.31(静默安装)
  2. 直方图匹配法(规则化)
  3. 使用无锁队列(环形缓冲区)注意事项
  4. ASP.NET留言板 文字加表情
  5. python对数组的操作_Python Numpy库对数组的操作详解,
  6. ORK包的安装与linemod算法识别测试 (使用kinect v2 出现很奇怪的问题和解决)
  7. Android应用程序访问linux驱动第二步:实现并测试hardware层
  8. LINQ TO XML 应用之 Win8 Metro 开发
  9. creo数控编程怎么样_CREO 3.0中文版数控加工高手必备118招
  10. FPGA编程入门:Quartus II 设计1位全加器
  11. 微信小程序 input 动态修改对象数组中某一值
  12. MySQL远程连接失败(错误码:2003)
  13. 八爪鱼导出到mysql数据库_八爪鱼采集器怎么将数据导出数据库?
  14. USB,蓝牙,以太网,还是WIFI?
  15. MySQL 面试知识点 汇总
  16. 云上全流程透明性备品备件协同管理
  17. flutter集成Apple第三方登录
  18. jboot 配置durid + logback debug打印 sql+执行参数(非?)
  19. Word2vec 计算两个文本之间相似度
  20. 2018区块链概念股龙头

热门文章

  1. npm降级与升级的命令
  2. SketchUp 2018 适用的联合推拉(超级推拉)扩展插件Joint Push Pull下载
  3. 女生一般学计算机还是电子商务,电子商务工资一般多少 女生学电子商务好吗...
  4. 【WUT/武汉理工】PTA-2021年春-MOOC-《C编程方法学》编程练习题解集
  5. 拼车网站系统源码,拼车小程序
  6. Wannafly挑战赛13 B-Jxc军训
  7. 3D打印技术之切片引擎(1)
  8. Android离线文字转语音(中文)
  9. 计算机网络的三网的概念,“三网融合”的含义是什么
  10. 如何让一个受损的,并且发送一个外向洪范攻击或DDoS攻击的Droplet恢复