在抖音下面看到了有人画的冬奥会的冰墩墩,本人也想做一个。当然,图案的绘制还是得应用咱们相熟的 turtle 框架。起因很简略,它是一种基于 canvas 画布的 UI 框架。
文末附残缺源代码,可间接运行。
浏览全文
首先,将这个 turtle 库装置好。
pip install turtle
将 turtle 导入咱们的模块应用即可。
import turtle as tle
设置画笔的全局属性,先设置画笔的根本速度和 UI 界面的题目吧
tle.speed(50) # 速度设置为 100
tle.title('冬奥会:冰墩墩!公众号:[Python 集中营]') # 设置好 UI 界面的题目
tle.bgcolor('white') # 将背景色彩设置为红色,有夏季的感觉...
tle.pencolor("deep sky blue")
tle.fillcolor("deep sky blue")
设置好画笔的全局属性当前,接下来就是图形绘制的局部。思路就是拿一只画笔在画布下面画图就好了。
在开始绘制之前,先来阐明一下几个次要函数的应用办法。代码量比拟多,然而用到的函数根本都是上面这几个。
turtle.goto(x,y) 将画笔挪动到坐标为 x,y 的地位
turtle.penup() 提起笔挪动,不绘制图形,用于另起一个中央绘制
turtle.circle() 画圆,半径为正 (负),示意圆心在画笔的右边(左边) 画圆
setheading(angle) 设置以后朝向为 angle 角度
turtle.pendown() 挪动时绘制图形,缺省时也为绘制
turtle.begin_fill() 筹备开始填充图形
turtle.end_fill() 填充实现
turtle.left(degree) 逆时针挪动 degree°
turtle.forward(distance) 向以后画笔方向挪动 distance 像素长度
画出冰墩墩的两个耳朵,留神在画布上把握好坐标,尽量打算将冰墩墩放在画布的正中间。
# 冰墩墩左耳朵
tle.penup()
tle.goto(-120, 200)
tle.setheading(160)
tle.begin_fill()
tle.pendown()
tle.circle(-30, 230)
tle.setheading(180)
tle.circle(37, 90)
tle.end_fill()
# 冰墩墩右耳朵
tle.penup()
tle.goto(90, 200)
tle.setheading(20)
tle.begin_fill()
tle.pendown()
tle.circle(30, 230)
tle.setheading(0)
tle.circle(-37, 90)
tle.end_fill()
绘制冰墩墩的头部,头部次要是通过弧线形成的。
# 冰墩墩头部
tle.pensize(5)
tle.penup()
tle.goto(-83, 237)
tle.setheading(30)
tle.pendown()
tle.circle(-134, 60)
tle.penup()
tle.goto(-120, 200)
tle.setheading(-120)
tle.pendown()
tle.circle(200, 80)
tle.penup()
tle.goto(90, 200)
tle.setheading(-60)
tle.pendown()
tle.circle(-200, 80)
tle.penup()
tle.setheading(210)
tle.pendown()
tle.circle(-120, 60)
绘制冰墩墩的双眼状况,双眼次要由眼圈、眼眶、眼珠形成的。
# 冰墩墩左眼
tle.penup()
tle.goto(-110, 100)
tle.setheading(-45)
tle.begin_fill()
tle.pendown()
agle = 0.2
for i in range(120):
if 0 <= i < 30 or 60 <= i < 90:
agle = agle + 0.1
tle.left(3)
tle.forward(agle)
else:
agle = agle - 0.1
tle.left(3)
tle.forward(agle)
tle.end_fill()
tle.fillcolor("white")
tle.penup()
tle.goto(-73, 125)
tle.setheading(0)
tle.begin_fill()
tle.pendown()
tle.circle(14, 360)
tle.end_fill()
tle.penup()
tle.goto(-72, 133)
tle.setheading(0)
tle.begin_fill()
tle.pendown()
tle.circle(6, 360)
tle.end_fill()
# 冰墩墩右眼
tle.penup()
tle.goto(80, 100)
tle.setheading(45)
tle.begin_fill()
tle.fillcolor("deep sky blue")
tle.pendown()
agle = 0.2
for i in range(120):
if 0 <= i < 30 or 60 <= i < 90:
agle = agle + 0.1
tle.left(3)
tle.forward(agle)
else:
agle = agle - 0.1
tle.left(3)
tle.forward(agle)
tle.end_fill()
tle.fillcolor("white")
tle.penup()
tle.goto(43, 125)
tle.setheading(0)
tle.begin_fill()
tle.pendown()
tle.circle(14, 360)
tle.end_fill()
tle.penup()
tle.goto(42, 133)
tle.setheading(0)
tle.begin_fill()
tle.pendown()
tle.circle(6, 360)
tle.end_fill()
公众号内回复 ” 冰墩墩 ” 获取残缺源代码。
我是 [Python 集中营]、很快乐您看到了最初,我是一个专一于 Python 常识分享的公众号,心愿能够失去您的关注~
【往期精彩】
最柔美的表格查看插件:tabulate
抖音同款课堂点名零碎,PyQt5 写起来很简略 …
动工啦!批量向 PDF 文件增加中文水印 …
大年初二、做了一个 windows 告诉管理器!
百度图片下载器 2.0