还记得,曾几何时,python是一门非常强大的语言,很单纯,也很快乐,曾经python对我的唯一用途就是网络爬虫。
但是,
随着时间的推移,python变的越来越社会,他的科学计算库也崛起了,自然语言处理(NLP)的库也出来了,还有很多,TensorFlow for python,matplotylib,pillow,itchat,PyQt等等,多到数不清。
小编:python,是你社会了!
小编:我们小猪佩奇需要向你致敬!
python说:“好说,好说,那我就来画个小猪佩奇给你看看!”
小编:你还能画小猪佩奇?这么6?
python:那必须,谁让我是社会的python!
小编顿时对python又充满崇拜的眼神(尽管它社会了)
python:行吧,在此之前,请允许我介绍一下我的一个工具,可以吗?
小编:Ok,请开始你的表演!
python开始了它的装逼。
首先,python想和我们介绍的是 Turtle库。
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在
一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
介绍完之后我们就直接上效果图了!
很犀利!
下面我们就来看看这个强大的库吧!
首先,安装turtle:
pip install turtle
安装结束,下面我们来接触这个库的方法了!
1. 画布(canvas)
画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
设置画布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),参数分别为画布的宽(单位像素), 高, 背景颜色。
如:turtle.screensize(800,600, "green")
turtle.screensize() #返回默认大小(400, 300)
turtle.setup(width=0.5, height=0.75, startx=None, starty=None),参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
2. 绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
(1) 画笔运动命令
命令 |
说明 |
turtle.forward(distance) |
向当前画笔方向移动distance像素长度 |
turtle.backward(distance) |
向当前画笔相反方向移动distance像素长度 |
turtle.right(degree) |
顺时针移动degree° |
turtle.left(degree) |
逆时针移动degree° |
turtle.pendown() |
移动时绘制图形,缺省时也为绘制 |
turtle.goto(x,y) |
将画笔移动到坐标为x,y的位置 |
turtle.penup() |
提起笔移动,不绘制图形,用于另起一个地方绘制 |
turtle.circle() |
画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 |
setx( ) |
将当前x轴移动到指定位置 |
sety( ) |
将当前y轴移动到指定位置 |
setheading(angle) |
设置当前朝向为angle角度 |
home() |
设置当前画笔位置为原点,朝向东。 |
dot(r) |
绘制一个指定直径和颜色的圆点 |
(2) 画笔控制命令
命令 |
说明 |
turtle.fillcolor(colorstring) |
绘制图形的填充颜色 |
turtle.color(color1, color2) |
同时设置pencolor=color1, fillcolor=color2 |
turtle.filling() |
返回当前是否在填充状态 |
turtle.begin_fill() |
准备开始填充图形 |
turtle.end_fill() |
填充完成 |
turtle.hideturtle() |
隐藏画笔的turtle形状 |
turtle.showturtle() |
显示画笔的turtle形状 |
(3) 全局控制命令
命令 |
说明 |
turtle.clear() |
清空turtle窗口,但是turtle的位置和状态不会改变 |
turtle.reset() |
清空窗口,重置turtle状态为起始状态 |
turtle.undo() |
撤销上一个turtle动作 |
turtle.isvisible() |
返回当前turtle是否可见 |
stamp() |
复制当前图形 |
turtle.write(s [,font=("font-name",font_size,"font_type")]) |
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项 |
(4) 其他命令
命令 |
说明 |
turtle.mainloop()或turtle.done() |
启动事件循环 -调用Tkinter的mainloop函数。 必须是乌龟图形程序中的最后一个语句。 |
turtle.mode(mode=None) |
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出模式,则返回当前模式。 |
turtle.delay(delay=None) |
设置或返回以毫秒为单位的绘图延迟。 |
turtle.begin_poly() |
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。 |
turtle.end_poly() |
停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。 |
turtle.get_poly() |
返回最后记录的多边形。 |
到现在,我们已经把turtle模块的大部分一些画图用到方法都列举出来了,既然有了方法,咱们就可以开始画图了!
我们每画一个部位,就把这个部位封装在一个函数中,然后调用即可,首先我们来画鼻子:
def nose(x,y):#鼻子
t.pu()
t.goto(x,y)
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.08
t.lt(3) #向左转3度
t.fd(a) #向前走a的步长
else:
a=a-0.08
t.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()
看效果:
猪鼻子画完了我们现在开始画社会人的头!
def head(x,y):#头
t.color((255,155,192),"pink")
t.pu()
t.goto(x,y)
t.seth(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.08
t.lt(3) #向左转3度
t.fd(a) #向前走a的步长
else:
a=a-0.08
t.lt(3)
t.fd(a)
t.end_fill()
查看效果:
下面我们来画耳朵:
def ears(x,y): #耳朵
t.color((255,155,192),"pink")
t.pu()
t.goto(x,y)
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()
耳朵还是比较简单的,接下来我们来画眼睛:
def eyes(x,y):#眼睛
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()
看看效果:
感觉还不错
下面我们来画腮红和嘴巴:
def cheek(x,y):#腮
t.color((255,155,192))
t.pu()
t.goto(x,y)
t.pd()
t.seth(0)
t.begin_fill()
t.circle(30)
t.end_fill()
def mouth(x,y): #嘴
t.color(239,69,19)
t.pu()
t.goto(x,y)
t. pd()
t.seth(-80)
t.circle(30,40)
t.circle(40,80)
很简单,就是两个圆和一条线:
下面我们把身体画出来:
def body(x,y):#身体
t.color("red",(255,99,71))
t.pu()
t.goto(x,y)
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()
def hands(x,y):#手
t.color((255,155,192))
t.pu()
t.goto(x,y)
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)
def foot(x,y):#脚
t.pensize(10)
t.color((240,128,128))
t.pu()
t.goto(x,y)
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)
顺便把手和脚一步到位,
最后还有个小尾巴:
def tail(x,y):#尾巴
t.pensize(4)
t.color((255,155,192))
t.pu()
t.goto(x,y)
t.pd()
t.seth(0)
t.circle(70,20)
t.circle(10,330)
t.circle(70,30)
画完这些,我们的小猪佩奇就算画完了,就是最初的效果了
Ok,我们的python已经搞定社会人了!
听说有气质的人都会关注这个公众号!
文章来源: blog.csdn.net,作者:敲代码的灰太狼,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/tongtongjing1765/article/details/100581628