Turtle库是Python的绘图函数库.因名思义,Turtle小乌龟,慢慢爬,爬出轨迹,一步一个脚印,这个小乌龟有很多功能,如控制爬行速度,颜色填充,运动方向,角度等。
- 导入库
from turtle import *
-
画布(convas)
画布即绘图区,有尺寸,背景色,初始位置属性。
序号 | 方法 | 描述 |
---|---|---|
1 | screensize(canvwidth=None, canvheight=None, bg=None) | canvwidth画布宽度,canvheight画布高度,bg画布背景色,默认(400, 300)白色背景 |
2 | setup(width, height) | width和height为整数时,表示像素,为小数时表示占屏幕比例 |
3 | setup(startx, starty) | 画布左上角的坐标,为空时,画布在屏幕中央,画布对角线交点为原点(0,0) |
4 | setup(width, height, startx, starty) | 画布大小及初始位置 |
**常用的几个方法,写在下边**
import turtle
turtle.screensize(500,1000,'green')#宽度,高度,背景色
import turtle
turtle.setup(500,400,200,200)
#输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例。(startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
turtle.bgcolor('yellow')#背景颜色填充
-
画笔(pen)
画笔有颜色,宽度及运动速度的属性.
序号 | 方法 | 描述 |
---|---|---|
1 | pensize() | 画笔宽度 |
2 | pencolor() | 画笔颜色,颜色字符串"red",“green”, "blue"或者RGB元组(255, 255, 255) |
3 | speed() | 画笔运动速度 |
- 画笔绘图
序号 | 方法 | 描述 |
---|---|---|
1 | forward(distance)=fd(distance) | 画笔移动distance像素长度 |
2 | backward(distance)=bk(distance)=back(distance) | 画笔反方向移动distance像素长度 |
3 | right(degree)=rt(angle) | 顺时针移动的度数 |
4 | left(degree)=lt(angle) | 逆时针移动的度数 |
5 | pendown() | 移动时绘制图形,默认绘制 |
6 | goto(x, y) | 画笔移动到坐标(x, y)的位置 |
7 | penup() | 提起画笔,移动到指定位置,不绘制曲线 |
8 | circle(radius, extent=None, steps=None) | 绘制圆,radius为半径,extent为弧度,steps为内切多边形边数,半径为正,逆时针绘制圆;半径为负,顺时针绘制圆; |
9 | setx() | x轴移动到指定位置 |
10 | sety() | y轴移动到指定位置 |
11 | setheading(angle)=seth(angle) | 设置画笔的朝向为angle角度 |
12 | home() | 设置当前画笔位置为原点,画笔朝向东 |
13 | dot( r ) | 绘制一个指定指定和颜色的原点 |
14 | fillcolor(colorstring) | 绘制图形填充颜色 |
15 | color(color1, color2) | color1为画笔颜色,color2为填充颜色 |
16 | filling() | 返回是否在填充状态 |
17 | begin_fill() | 开始填充 |
18 | end_fill() | 结束填充 |
19 | hideturtle() | 隐藏画笔turtle形状 |
20 | showturtle() | 显示画笔turtle形状 |
- 画笔功能操作
序号 | 方法 | 描述 |
---|---|---|
1 | clear() | 清空turtle窗口,保持turtle位置和状态 |
2 | reset() | 重置turtle窗口 |
3 | undo() | 撤销上一个turtle动作 |
4 | isvisible() | 返回当前turtle是否可见 |
5 | stamp() | 复制当前图像 |
6 | write(s[, font=(“font-name”, font_size, “font_type”)]) | 写文本,s为文本内容,font是字体参数,分别为字体名称,大小和类型,为可选项 |
7 | mainloop(), done() | 启动事件循环,解决一闪而过,必须是程序最后一句 |
8 | mode(mode=None) | 画笔模式standard,log和world模式,初始画笔standard逆时针向右(东);初始画笔logo顺时针向上(北) |
9 | delay(delay=None) | 延迟绘图时间,单位是毫秒 |
10 | begin_poly() | 开始记录多边形顶点,当前画笔位置是多边形的第一个顶点 |
11 | end_poly() | 停止记录多边形的顶点,当前画笔位置是多边形最后一个顶点,与第一个顶点相连 |
12 | get_ploy() | 返回最后记录的多边形 |
习题练习
- 绘制五角星,外框为黄色,填充为红色,要求必须根正苗红,始终跟党走
import turtle
turtle.screensize(800,800,'black')
turtle.fillcolor('red')
turtle.goto(-200,0)
turtle.pendown()
turtle.begin_fill()
turtle.pencolor('yellow')
turtle.pensize(10)
for i in range(5):
turtle.fd(400)
turtle.right(144)
turtle.end_fill()
turtle.penup()
输出结果为:结合random()函数绘制一个雪景图,“雪景”图形艺术背景为黑色,分为上下两个区域,上方是漫天彩色雪花,下方是由远及近的灰色横线渐变。该图运用了随机元素,如雪花位置、颜色、大小、花瓣数目、地面灰色线条长度、线条位置等,需要使用turtle库和random库。
绘制分为三个步骤
- 构建图的背景
- 绘制雪花效果
- 绘制雪地效果
第一步,构建图的背景
设定窗体大小为800x600像素,窗体颜色为black。然后,定义上方雪花绘制函数drawSnow()和下方雪地绘制函数drawGround()。
def main():
drawSnow()
drawGround()
if __name__ == '__main__':
main()
第二步,绘制雪花效果。
为体现艺术效果,drawSnow()函数首先隐藏turtle画笔、设置画笔大小、绘制速度,然后使用for循环绘制100朵雪花。雪花大小snowsize、雪花花瓣数dens都分别设定为一定数值范围随机数。最后通过for循环绘制出多彩雪花。
import random
import turtle
turtle.screensize(1000,1000,'black')
def drawSnow():
turtle.hideturtle()
turtle.pensize(2)
turtle.Turtle().screen.delay(0)
for i in range(300):
r,g,b = random.random(),random.random(),random.random()
turtle.pencolor(r,g,b)
turtle.penup()
turtle.setx(random.randint(-480,480))
turtle.sety(random.randint(-100,480))
dens = random.randint(6,8)
snowsize = random.randint(10,14)
turtle.pendown()
for j in range(dens):
turtle.fd(snowsize)
turtle.bk(snowsize)
turtle.right(360/dens)
def main():
drawSnow()
drawGround()
if __name__ == '__main__':
main()
第三步,绘制雪地效果。drawGround()函数使用for循环绘制地面400个
小横线,画笔大小pensize、位置坐标x、y、线段长度均通过randint()函数作为随机数产生。
def drawGround():
turtle.penup()
turtle.hideturtle()
turtle.pensize(10)
for i in range(900):
r,g,b = random.random(),random.random(),random.random()
turtle.pencolor(r,g,b)
x = random.randint(-480,480)
y = random.randint(-480,-160)
turtle.goto(x,y)
turtle.pendown()
turtle.fd(random.randint(10,14))
turtle.penup()
完整程序为:
import random
import turtle
turtle.screensize(1000,1000,'black')
def drawSnow():
turtle.hideturtle()
turtle.pensize(2)
turtle.Turtle().screen.delay(0)
for i in range(500):
r,g,b = random.random(),random.random(),random.random()
turtle.pencolor(r,g,b)
turtle.penup()
turtle.setx(random.randint(-480,480))
turtle.sety(random.randint(-100,480))
dens = random.randint(6,8)
snowsize = random.randint(10,14)
turtle.pendown()
for j in range(dens):
turtle.fd(snowsize)
turtle.bk(snowsize)
turtle.right(360/dens)
def drawGround():
turtle.penup()
turtle.hideturtle()
turtle.pensize(10)
for i in range(900):
r,g,b = random.random(),random.random(),random.random()
turtle.pencolor(r,g,b)
x = random.randint(-480,480)
y = random.randint(-480,-160)
turtle.goto(x,y)
turtle.pendown()
turtle.fd(random.randint(10,14))
turtle.penup()
def main():
drawSnow()
drawGround()
if __name__ == '__main__':
main()
输出效果: