(1)概述
- 在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言——LOGO语言,它的特色就是通过编程指挥一个小海龟(turtle)在屏幕上绘图。
- 海龟绘图(Turtle Graphics)后来被移植到各种高级语言中,Python内置了turtle库,基本上100%复制了原始的Turtle Graphics的所有功能。
(2)简单例子
# 导入turtle包的所有内容:
from turtle import *
# 设置笔刷宽度
width(4)
# 前进
forward(200)
# 右转90度
right(90)
# 笔刷颜色
pencolor('red')
forward(100)
right(90)
pencolor('green')
forward(200)
right(90)
pencolor('blue')
forward(100)
right(90)
# 调用done()使得窗口等待被关闭,否则将立刻关闭窗口:
done()
(3)画布API
- 画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置
- 常用的画布方法有两个:screensize()和setup()
- turtle.screensize(canvwidth=None, canvheight=None, bg=None)
- 参数分别为画布的宽(单位像素), 高, 背景颜色
- 此方法实测宽高参数无效,仅背景色有效
- turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
- width, height:输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例
- (startx, starty):这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心
turtle.screensize(800, 600, "green")
turtle.screensize() #返回默认大小(400, 300)
turtle.setup(width=0.6, height=0.6)
turtle.setup(width=800, height=800, startx=100, starty=100)
- turtle.clear():清空turtle窗口,但是turtle的位置和状态不会改变
- turtle.reset():清空窗口,重置turtle状态为起始状态
- turtle.undo():撤销上一个turtle动作
- stamp():复制当前图形
- turtle.write(s[,font=("font-name",font_size,"font_type")])
- 写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项
turtle.write("Done", font=('Arial', 40, 'normal'))
(4)画笔控制命令
- turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快
- turtle.pensize(width):绘制图形时的宽度,又名turtle.width(width)
- turtle.pencolor():画笔颜色,没有参数传入返回当前画笔颜色;传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组
- turtle.fillcolor(colorstring):绘制图形的填充颜色
- turtle.color(color1, color2):同时设置pencolor=color1, fillcolor=color2
- turtle.filling():返回当前是否在填充状态
- turtle.begin_fill():准备开始填充图形
- turtle.end_fill():填充完成;
- turtle.hideturtle():隐藏箭头显示;
- turtle.showturtle():与hideturtle()函数对应
- turtle.isvisible():返回当前turtle是否可见
# 设置画笔宽度
turtle.pensize(10)
# 设置画笔颜色方式一:字符串
turtle.pencolor('red')
# 设置画笔颜色方式一:RGB tuple
tup = (0.2,0.8,0.6)
turtle.pencolor(tup)
# 返回当前画笔颜色tuple
print(turtle.pencolor())
# 设置画笔速度
turtle.speed(0)
(5)画笔运动命令
- turtle.forward(distance):向当前画笔方向移动distance像素长,缩写fd
- turtle.backward(distance):向当前画笔相反方向移动distance像素长度
- turtle.right(degree):顺时针移动degree°
- turtle.left(degree):逆时针移动degree°
- turtle.seth(angle):逆时针旋转angle度
- turtle.pendown():移动时绘制图形,缺省时也为绘制,缩写turtle.pd()
- turtle.goto(x,y):将画笔移动到坐标为x,y的位置
- turtle.penup():移动时不绘制图形,提起笔,用于另起一个地方绘制时用,缩写turtle.pu()
- turtle.speed(speed):画笔绘制的速度范围[0,10]整数
- turtle.circle(radius, extent=None, steps=None):画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
- radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆
- extent(弧度) (optional);
- steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)
# 一当前画笔位置为圆上一点,正上方30px为圆心画圆
turtle.circle(30)
turtle.forward(100)
# 一当前画笔位置为圆上一点,正下方30px为圆心画圆
turtle.circle(-30)
# 三角形
circle(50,steps=3)
# 半圆
circle(120, 180)
网友评论