本文利用 Python 绘制两个卡通角色,并带大家熟悉一下绘图程序包 turtle 的一些用法,先看一下 最终皮卡丘的绘制效果录制_2020_08_01_22_15_39_710.gif
在使用之前请确保 turtle 已经安装成功,第一次安装 turtle 时,用的是 pip 安装包,但总会出现下面的错误,
经查阅资料找到了一种可行的解决方法:
except ValueError, ve:
改为
except (ValueError, ve):3, 使用 pip 命令对本地下载文件进行安装
pip install C:\Users\XXX\Desktop\turtle-0.0.2
2, turtle 命令介绍
turtle 绘图时有个特点,代码行数看起来比较大,但用到的也就是命令操作,来回使用;这里我提前把 turtle 几个常用的命令罗列出来,并在旁边简单介绍一下其用法,方便大家的学习:ble data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">
Func(函数)Para type(参数类型)Desc(描述)
Func(函数)Para type(参数类型)Desc(描述)
Func(函数)Para type(参数类型)Desc(描述)
Func(函数)Para type(参数类型)Desc(描述)
Func(函数)Para type(参数类型)Desc(描述)
Func(函数)Para type(参数类型)Desc(描述)
Func(函数)Para type(参数类型)Desc(描述)
Func(函数)Para type(参数类型)Desc(描述)
注 : func 中换行表示或的意思,每种函数名有它的缩写,所以存在函数 有2-3 种 不同写法,但函数功能是一样的, - 表示无参数;
3,绘制皮卡丘
代码部分
'''
绘制皮卡丘
'''
import turtle
def getPosition(x,y):
turtle.setx(x)
turtle.sety(y)
print(x,y)
class Pikachu:
def __init__(self):
self.t = turtle.Turtle()
t = self.t
t.pensize(3) # 画笔大小
t.speed(9) #画笔速度
t.ondrag(getPosition)
def onTrace_goto(self,x,y):
self.t.penup()
self.t.goto(x,y)
self.t.pendown()
def leftEye(self,x,y):
self.onTrace_goto(x,y)
t = self.t
t.seth(0)
t.fillcolor('#333333')
t.begin_fill()
t.circle(22)
t.end_fill()
self.onTrace_goto(x,y+10)
t.fillcolor('#000000')
t.begin_fill()
t.circle(10)
t.end_fill()
self.onTrace_goto(x+6,y+22)
t.fillcolor('#ffffff')
t.begin_fill()
t.circle(10)
t.end_fill()
def rightEye(self,x,y):
self.onTrace_goto(x,y)
t = self.t
t.seth(0)
t.fillcolor('#333333')
t.begin_fill()
t.circle(22)
t.end_fill()
self.onTrace_goto(x,y+10)
t.fillcolor('#000000')
t.begin_fill()
t.circle(10)
t.end_fill()
self.onTrace_goto(x-6,y+22)
t.fillcolor('#ffffff')
t.begin_fill()
t.circle(10)
t.end_fill()
def mouth(self,x,y):
self.onTrace_goto(x,y)
t = self.t
t.fillcolor('#88141D')
t.begin_fill()
# 下嘴唇
l1 = []
l2 = []
t.seth(190)
a = 0.7
for i in range(28):
a +=0.1
t.right(3)
t.fd(a)
l1.append(t.position())
self.onTrace_goto(x,y)
t.seth(10)
a = 0.7
for i in range(28):
a +=0.1
t.left(3)
t.fd(a)
l2.append(t.position())
#上嘴唇
t.seth(10)
t.circle(50,15)
t.left(180)
t.circle(-50,15)
t.circle(-50,40)
t.seth(233)
t.circle(-50,55)
t.left(180)