简介

Python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是Python的内部库。

画布(canvas)

画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。

设置画布大小

turtle.screensize(canvwidth=None, canvheight=None, bg=None)

参数:

  • canvwidth:画布的宽度(单位:像素)
  • canvheight:画布的高度(单位:像素)
  • .bg:背景颜色
  • 若不设置值,默认参数为(400,300,None)

设置画布位置

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)

参数:

  • width,height:输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例
  • (startx,starty):这一坐标表示矩形窗口左上角顶点的位置。如果为空,则窗口位于屏幕中心

画笔

 画笔状态

在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝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)