Python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是Python的内部库。
画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
设置画布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
参数:
设置画布位置
turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
参数:
画笔状态
在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向)。turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
画笔常用属性和方法
属性/方法 | 描述 |
---|---|
turtle.pensize() | 设置画笔的宽度 |
turtle.pencolor() | 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色(RGB、字符串) |
turtle.speed(speed) | 设置画笔的速度。speed属于[0, 10]区间的整数,数字越大速度越快 |
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.speed(speed) | 画笔绘制的速度范围[0,10]整数 |
turtle.circle() | 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 |
turtle.pensize(width) | 绘制图形时的宽度 |
turtle.pencolor() | 画笔颜色 |
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.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的参数也是可选项 |
实例:绘制五角星
import turtle
import time
t = turtle.Turtle()
t.pensize(10) # 定义画笔的宽度
t.pencolor("yellow") # 定义画笔颜色
t.fillcolor("red") # 定义填充颜色
t.begin_fill() # 开始填充图像
for i in range(5): # 五角星循环五次
t.forward(500)
t.right(144) # 右转144°
t.end_fill() # 停止填充
time.sleep(2) # 阻塞两秒
t.penup() # 提起笔,移动时不绘制图形
t.goto(-150, 120) # 将画笔移动到某坐标点
t.color("violet")
t.write("Done", font=('Arial', 40, 'normal')) # 设置文字和字体
time.sleep(5)
实例:画一朵玫瑰
import turtle
import time
t = turtle.Turtle()
t.speed(1)
# 设置初始位置
t.penup()
t.left(90)
t.fd(200)
t.pendown()
t.right(90)
# 花蕊
t.fillcolor("red")
t.begin_fill()
t.circle(10, 180)
t.circle(25, 110)
t.left(50)
t.circle(60, 45)
t.circle(20, 170)
t.right(24)
t.fd(30)
t.left(10)
t.circle(30, 110)
t.fd(20)
t.left(40)
t.circle(90, 70)
t.circle(30, 150)
t.right(30)
t.fd(15)
t.circle(80, 90)
t.left(15)
t.fd(45)
t.right(165)
t.fd(20)
t.left(155)
t.circle(150, 80)
t.left(50)
t.circle(150, 90)
t.end_fill()
# 花瓣1
t.left(150)
t.circle(-90, 70)
t.left(20)
t.circle(75, 105)
t.setheading(60)
t.circle(80, 98)
t.circle(-90, 40)
# 花瓣2
t.left(180)
t.circle(90, 40)
t.circle(-80, 98)
t.setheading(-83)
# 叶子1
t.fd(30)
t.left(90)
t.fd(25)
t.left(45)
t.fillcolor("green")
t.begin_fill()
t.circle(-80, 90)
t.right(90)
t.circle(-80, 90)
t.end_fill()
t.right(135)
t.fd(60)
t.left(180)
t.fd(85)
t.left(90)
t.fd(80)
# 叶子2
t.right(90)
t.right(45)
t.fillcolor("green")
t.begin_fill()
t.circle(80, 90)
t.left(90)
t.circle(80, 90)
t.end_fill()
t.left(135)
t.fd(60)
t.left(180)
t.fd(60)
t.right(90)
t.circle(200, 60)
time.sleep(5)