Python之turtle绘图

Contents


1. 前言

Turtle又称海龟,Turtle库是Python语言中一个很流行的绘制图形的函数库,一个小海龟,在画布上从(0,0)位置开始,通过函数指令的控制,在这个平面坐标系中移动,海龟在爬行的路径上绘制出图形。

2. turtle的官方文档

turtle — Turtle graphics — Python 3.6.5 documentation

3. turtle绘图的基础知识

3.1 画布
turtle窗体布局 :turtle.setup(width,height,startx,starty)
image1

3.2 画笔
画笔(画笔的属性,颜色、画线的宽度等)

(1)、turtle.pensize():设置画笔的宽度;

(2)、turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如”green”, “red”,也可以是RGB 3元组。

(3)、 turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

3.3 绘图

  • turtle空间坐标体系
    绝对坐标:
    turtle.goto(x,y):将画笔移动到坐标为x,y的位置
    turtle.penup(): 提起笔移动,不绘制图形,用于另起一个地方绘制
    turtle.pendown():移动时绘制图形,缺省时也为绘制
    海龟坐标:
    turtle.cirle(r,angle) : 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
    turtle.bk(d): 向当前画笔相反方向移动distance像素长度
    turtle.fd(d): 向当前画笔方向移动distance像素长度

  • turtle角度坐标体系
    绝对角度
    turtle.seth(angle): 只改变方向但不行进,angle为绝对度数
    海龟角度
    turtle.left(angle) : 逆时针移动degree°
    turtle.right(angle) : 顺时针移动degree°

4. 实例

# !/usr/bin/env python3
# -*- coding: utf-8 -*-

from turtle import *

# 跳跃
def my_goto(x, y):
    penup()
    goto(x, y)
    pendown()

# 眼睛
def eyes():
    tracer(False)
    a = 2.5
    for i in range(120):
        if 0 <= i < 30 or 60 <= i < 90:
            a -= 0.05
            lt(3)
            fd(a)
        else:
            a += 0.05
            lt(3)
            fd(a)
    tracer(True)

# 胡须
def beard():
    my_goto(-37, 135)
    seth(165)
    fd(60)
    my_goto(-37, 125)
    seth(180)
    fd(60)
    my_goto(-37, 115)
    seth(193)
    fd(60)
    my_goto(37, 135)
    seth(15)
    fd(60)
    my_goto(37, 125)
    seth(0)
    fd(60)
    my_goto(37, 115)
    seth(-13)
    fd(60)

# 嘴巴
def mouth():
    my_goto(5, 148)
    seth(270)
    fd(100)
    seth(0)
    circle(120, 50)
    seth(230)
    circle(-120, 100)

# 围巾
def scarf():
    fillcolor('#e70010')
    begin_fill()
    seth(0)
    fd(200)
    circle(-5, 90)
    fd(10)
    circle(-5, 90)
    fd(207)
    circle(-5, 90)
    fd(10)
    circle(-5, 90)
    end_fill()

# 鼻子
def nose():
    my_goto(-10, 158)
    fillcolor('#e70010')
    begin_fill()
    circle(20)
    end_fill()

# 黑眼睛
def black_eyes():
    seth(0)
    my_goto(-20, 195)
    fillcolor('#000000')
    begin_fill()
    circle(13)
    end_fill()

    pensize(6)
    my_goto(20, 205)
    seth(75)
    circle(-10, 150)
    pensize(3)

    my_goto(-17, 200)
    seth(0)
    fillcolor('#ffffff')
    begin_fill()
    circle(5)
    end_fill()
    my_goto(0, 0)



# 脸
def face():
    fd(183)
    fillcolor('#ffffff')
    begin_fill()
    lt(45)
    circle(120, 100)

    seth(90)
    eyes()
    seth(180)
    penup()
    fd(60)
    pendown()
    seth(90)
    eyes()
    penup()
    seth(180)
    fd(64)
    pendown()
    seth(215)
    circle(120, 100)
    end_fill()

# 头型
def head():
    penup()
    circle(150, 40)
    pendown()
    fillcolor('#00a0de')
    begin_fill()
    circle(150, 280)
    end_fill()

# 画哆啦A梦
def Doraemon():
    # 头部
    head()
    # 围脖
    scarf()
    # 脸
    face()
    # 红鼻子
    nose()
    # 嘴巴
    mouth()
    # 胡须
    beard()
    # 画眼睛
    black_eyes()

if __name__ == '__main__':
    screensize(500,600, "#f0f0f0")
    pensize(3)  # 画笔宽度
    speed(9)    # 画笔速度
    Doraemon()
    my_goto(100, -100)
    write('by zuolin', font=("Bradley Hand ITC", 30, "bold"))
    mainloop()


效果: image2

5. 小结

通过以上教程,我们能通过turtle库绘制出我们想要的图形,当然,如果你想绘制更加好看的图形,就需要熟练掌握turtle库了!


转载请注明:yezuolin的博客 » 点击阅读原文