Python库之turtle库

turtle库的学习

  • turtle简介
  • 画布
    • 绘图坐标体系
    • setup()函数
  • 画笔及图形绘制
    • 画笔的属性
    • 绘图命令
      • 画笔运动命令
      • 画笔控制命令
      • 全局控制命令
    • 附录
      • 等价函数(简写)
  • 代码实例
    • 小蛇的绘制
      • 代码
      • 运行结果
    • 同心圆靶绘制
      • 代码
      • 运行结果
    • 正方形螺旋线绘制
      • 代码
      • 运行结果
    • 太阳花的绘制
      • 代码
      • 运行结果

turtle简介

Python的turtle库是一个直观有趣的图形绘制函数库。
turtle库的语法元素包括:绘图坐标体系、画笔控制函数和形状绘制函数等。

画布

绘图坐标体系

turtle库绘制图形有一个基本框架:一个小海龟在坐标体系中爬行,其爬行轨迹形成了所绘制的图形。
刚开始绘制时,小海龟位于画布的正中央,此处坐标是(0,0),行进方向为水平向右。
turtle库的角度坐标体系是固定的:以正东方向为0度(及小海龟初始爬行方向),逆时针方向依次增大,顺时针方向为负,依次减小。这些角度不会因为小海龟的爬行方向而改变。

setup()函数

turtle.setup(width, height, startx, starty)
作用:设置画布的大小和位置
width、height:窗口的宽度、高度。如果值是整数,则表示像素值;如果值是小数,则表示与屏幕的宽度、高度的比例。
startx、starty:窗口左侧与屏幕左侧的像素距离、窗口顶部与屏幕顶部的像素距离。如果值是None,则表示居于该方向的正中央。

画笔及图形绘制

画笔的属性

1、pensize():画笔的宽度。接收一个参数。
2、pencolor(): 没有参数传入,返回当前画笔颜色,传入参数则设置画笔颜色,参数可以是字符串如"green", “red”,也可以是RGB 3元组。
3、speed():设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快。

绘图命令

绘图命令的分类:运动命令、画笔控制命令、全局控制命令。

画笔运动命令

1、turtle.forward(distance): 向当前画笔方向移动distance像素长;
2、turtle.backward(distance): 向当前画笔相反方向移动distance像素长度;
3、turtle.right(degree): 顺时针移动degree°;
4、turtle.left(degree): 逆时针移动degree°;
5、turtle.pendown(): 移动时绘制图形,缺省时也为绘制;
6、turtle.goto(x,y): 将画笔移动到坐标为x,y的位置;
7、turtle.penup(): 移动时不绘制图形,提起笔,用于另起一个地方绘制时用;
8、turtle.speed(speed): 画笔绘制的速度范围[0,10]整数;
9、turtle.circle(raduis, extent,steps): 画圆。raduis表示圆的半径,半径为正(负),表示圆心在画笔的左边(右边)画圆。extent表示绘制弧形的角度,当不设置extend参数或extent=None时,表示绘制整个园。steps表示作半径为radius的圆的内切正steps边形。一般情况下不会同时设置extent和steps的值;
10、turtle.seth(to_angle): 改变画笔的绘制方向为to_angle,该角度是绝对方向的角度值,即正东方为0度。

画笔控制命令

1、turtle.pensize(width): 绘制图形时的宽度
2、turtle.pencolor(): 画笔颜色
3、turtle.fillcolor(colorstring): 绘制图形的填充颜色
4、turtle.color(color1, color2): 同时设置pencolor=color1, fillcolor=color2
5、turtle.filling(): 返回当前是否在填充状态
6、turtle.begin_fill(): 准备开始填充图形
7、turtle.end_fill(): 填充完成;
8、turtle.hideturtle(): 隐藏箭头显示;
9、turtle.showturtle(): 与hideturtle()函数对应

全局控制命令

1、turtle.clear() 清空turtle窗口,但是turtle的位置和状态不会改变
2、turtle.reset() 清空窗口,重置turtle状态为起始状态
3、turtle.undo() 撤销上一个turtle动作
4、turtle.isvisible() 返回当前turtle是否可见
5、stamp() 复制当前图形
6、turtle.write(s[,font=(“font-name”,font_size,“font_type”)]) 写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项

附录

等价函数(简写)

1、pendown() =pd() =down():表示落下画笔;
2、penup() = pu() = up():表示提起画笔;
3、pensize(wid) = width(wid):表示画笔的宽度;
4、showturtle() = st():显示箭头;
5、hideturtle() = ht():隐藏箭头显示;
6、forward(distance) = fd(distance):向当前画笔方向移动distance像素长;
7、backward(distance) = bk(distance) = back(distance):向当前画笔相反方向移动distance像素长度;
8、right(angle) = rt(angle):顺时针移动degree°;
9、setheading(angle) = seth(angle):设置小海龟的当前朝向;
10、left(angle) = lt(angle):逆时针移动degree°。

代码实例

小蛇的绘制

代码

import turtle

def drawSnake(rad, angle, len, neckrad):
    for i in range(len):
        if (i == 1):
            turtle.pencolor("blue")
        elif (i == 2):
            turtle.pencolor("green")
        elif (i == 3):
            turtle.pencolor("yellow")
        elif (i == 4):
            turtle.pencolor("orange")
        else:
            turtle.pencolor("red")
        turtle.circle(rad, angle)
        turtle.circle(-rad, angle)
    turtle.circle(rad, angle/2)
    turtle.fd(rad)
    turtle.circle(neckrad + 1, 180)
    turtle.fd(rad * 2 / 3)

def main():
    turtle.setup(1800, 800, 0, 0)
    pythonsize = 15
    turtle.pensize(pythonsize)
    turtle.pencolor("purple")
    turtle.seth(-40)
    drawSnake(40, 80, 6, pythonsize / 2)

main()

运行结果

Python库之turtle库_第1张图片

同心圆靶绘制

代码

import turtle

turtle.setup(800, 600, 200, 100)
mypensize = 20
turtle.pensize(mypensize)
colorstring = ("red", "orange", "yellow", "green", "lime", "blue", "purple", "white")
size = 0
for i in range(15):
    if i <= 7:
        turtle.pencolor(colorstring[i])
    else:
        turtle.pencolor(colorstring[15 - 1 - i])
    turtle.seth(90)
    turtle.circle(size)
    turtle.seth(0)
    turtle.penup()
    turtle.fd(mypensize)
    turtle.pendown()
    size += mypensize

运行结果

Python库之turtle库_第2张图片

正方形螺旋线绘制

代码

from turtle import *

setup(800, 800, None, 0)
pensize(1)
pencolor("magenta")
size = 3
for i in range(100):
    seth(90 * (i + 1))
    fd(size * (i + 1))
headturtle()

运行结果

Python库之turtle库_第3张图片

太阳花的绘制

代码

from turtle import *
color('red', 'yellow')
begin_fill()
while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break
end_fill()
done()

运行结果

Python库之turtle库_第4张图片

你可能感兴趣的:(修炼第一步,Python小练习)