本文的所有源码来自于:https://github.com/jackfrued/Python-100-Days/tree/master/Day01-15


文章目录

  • 一、概述:
  • 二、安装
  • 三、基础命令介绍


一、概述:

turtle(海龟)库是turtle绘图体系python的实现;

turtle绘图体系:1969年诞生,主要用于程序设计入门;

turtle库是python的标准库之一;属于入门级的图形绘制函数库;

二、安装

直接使用pip进行安装

pip install turtle

三、基础命令介绍

  1. 画布
    画布cancas是绘图区域,可以设置它的大小和初始位置
turtle.screensize(1000,600,'red')    #大小的设置
turtle.setup(width=0.5, height=0.75, startx=None, starty=None)#参数:
#width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,
#startx, starty: 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
  1. 显示绘图窗口
turtle.mainloop()#必须是程序的最后一个语句
  1. 画笔

(1)画笔运动的命令

turtle.forward(distance)   #向当前画笔方向移动a像素长度
turtle.backward(distance)  #向当前画笔相反方向移动a像素长度
turtle.right(degree)     #顺时针移动
aturtle.left(degree)     #逆时针移动
aturtle.pendown()   #移动时绘制图形
turtle.goto(x,y)    #将画笔移动到坐标为x,y的位置
turtle.penup()      #移动时不绘制图形,提起笔
turtle.speed()     #画笔绘制的速度范围
turtle.circle()     #画图,半径为正,表示圆心在画笔的左边画圈

(2)画笔控制命令

turtle.pensize(width)   #绘制图形的宽度
turtle.pencolor()       #画笔的颜色
turtle.fillcolor(color)     #绘制图形的填充颜色
turtle.color(color1,color2)     #同时设置pencolor=color1,fillcolor=color2
turtle.filling()        #返回当前是否在填充状态
turtle.begin_fill()     #准备开始填充图形
turtle.end_fill()       #填充完成
turtle.hideturtle()     #隐藏箭头显示
turtle.showturtle()     #显示箭头

(3)全局控制命令

turtle.clear()   #清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()   #清空窗口,重置turtle状态为起始位置
turtle.undo()    #撤销上一个turtle动作
  1. 实例
    (1)绘制国旗
"""
用Python的turtle模块绘制国旗
"""
import turtle


def draw_rectangle(x, y, width, height):
    """
    绘制矩形
    """
    turtle.goto(x, y)# 设置画笔位置
    # 设置画笔颜色
    turtle.pencolor('red')
    # 设置矩形填充颜色
    turtle.fillcolor('red')
    # 填充矩形
    turtle.begin_fill()
    for i in range(2):
        turtle.forward(width)
        turtle.left(90)
        turtle.forward(height)
        turtle.left(90)
    turtle.end_fill()


def draw_star(x, y, radius):
    """
    绘制五角星
    """
    turtle.setpos(x, y)  # 将画笔移动到坐标为x,y的位置(五角星起始位置)
    pos1 = turtle.pos()  # 返回画笔位置
    turtle.circle(-radius, 72)  # 绘制72度圆弧角
    pos2 = turtle.pos()
    turtle.circle(-radius, 72)
    pos3 = turtle.pos()
    turtle.circle(-radius, 72)
    pos4 = turtle.pos()
    turtle.circle(-radius, 72)
    pos5 = turtle.pos()
    turtle.color('yellow', 'yellow') #设置填充颜色
    # 开始填充
    turtle.begin_fill()
    turtle.goto(pos3)
    turtle.goto(pos1)
    turtle.goto(pos4)
    turtle.goto(pos2)
    turtle.goto(pos5)
    turtle.end_fill()


def main():
    """
    主程序
    """
    turtle.speed(12)
    turtle.penup()
    x, y = -270, -180
    # 画国旗主体
    width, height = 540, 360
    draw_rectangle(x, y, width, height)
    # 画大星星
    pice = 22
    center_x, center_y = x + 5 * pice, y + height - pice * 5
    turtle.goto(center_x, center_y)
    turtle.left(90)
    turtle.forward(pice * 3)
    turtle.right(90)
    draw_star(turtle.xcor(), turtle.ycor(), pice * 3)
    x_poses, y_poses = [10, 12, 12, 10], [2, 4, 7, 9]
    # 画小星星
    for x_pos, y_pos in zip(x_poses, y_poses):
        turtle.goto(x + x_pos * pice, y + height - y_pos * pice)
        turtle.left(turtle.towards(center_x, center_y) - turtle.heading())
        turtle.forward(pice)
        turtle.right(90)
        draw_star(turtle.xcor(), turtle.ycor(), pice)
    # 隐藏海龟
    turtle.ht()
    # 显示绘图窗口
    turtle.mainloop()


if __name__ == '__main__':
    main()

(2)绘制小猪佩奇

"""
绘制小猪佩奇
"""
from turtle import *


def nose(x,y):
    """画鼻子"""
    penup()
    # 将海龟移动到指定的坐标
    goto(x,y)
    pendown()
    # 设置海龟的方向(0-东、90-北、180-西、270-南)
    setheading(-30)
    begin_fill()
    a = 0.4
    for i in range(120):
        if 0 <= i < 30 or 60 <= i <90:
            a = a + 0.08
            # 向左转3度
            left(3)
            # 向前走
            forward(a)
        else:
            a = a - 0.08
            left(3)
            forward(a)
    end_fill()
    penup()
    setheading(90)
    forward(25)
    setheading(0)
    forward(10)
    pendown()
    # 设置画笔的颜色(红, 绿, 蓝)
    pencolor(255, 155, 192)
    setheading(10)
    begin_fill()
    circle(5)
    color(160, 82, 45)
    end_fill()
    penup()
    setheading(0)
    forward(20)
    pendown()
    pencolor(255, 155, 192)
    setheading(10)
    begin_fill()
    circle(5)
    color(160, 82, 45)
    end_fill()


def head(x, y):
    """画头"""
    color((255, 155, 192), "pink")
    penup()
    goto(x,y)
    setheading(0)
    pendown()
    begin_fill()
    setheading(180)
    circle(300, -30)
    circle(100, -60)
    circle(80, -100)
    circle(150, -20)
    circle(60, -95)
    setheading(161)
    circle(-300, 15)
    penup()
    goto(-100, 100)
    pendown()
    setheading(-30)
    a = 0.4
    for i in range(60):
        if 0<= i < 30 or 60 <= i < 90:
            a = a + 0.08
            lt(3) #向左转3度
            fd(a) #向前走a的步长
        else:
            a = a - 0.08
            lt(3)
            fd(a)
    end_fill()


def ears(x,y):
    """画耳朵"""
    color((255, 155, 192), "pink")
    penup()
    goto(x, y)
    pendown()
    begin_fill()
    setheading(100)
    circle(-50, 50)
    circle(-10, 120)
    circle(-50, 54)
    end_fill()
    penup()
    setheading(90)
    forward(-12)
    setheading(0)
    forward(30)
    pendown()
    begin_fill()
    setheading(100)
    circle(-50, 50)
    circle(-10, 120)
    circle(-50, 56)
    end_fill()


def eyes(x,y):
    """画眼睛"""
    color((255, 155, 192), "white")
    penup()
    setheading(90)
    forward(-20)
    setheading(0)
    forward(-95)
    pendown()
    begin_fill()
    circle(15)
    end_fill()
    color("black")
    penup()
    setheading(90)
    forward(12)
    setheading(0)
    forward(-3)
    pendown()
    begin_fill()
    circle(3)
    end_fill()
    color((255, 155, 192), "white")
    penup()
    seth(90)
    forward(-25)
    seth(0)
    forward(40)
    pendown()
    begin_fill()
    circle(15)
    end_fill()
    color("black")
    penup()
    setheading(90)
    forward(12)
    setheading(0)
    forward(-3)
    pendown()
    begin_fill()
    circle(3)
    end_fill()


def cheek(x,y):
    """画脸颊"""
    color((255, 155, 192))
    penup()
    goto(x,y)
    pendown()
    setheading(0)
    begin_fill()
    circle(30)
    end_fill()


def mouth(x,y):
    """画嘴巴"""
    color(239, 69, 19)
    penup()
    goto(x, y)
    pendown()
    setheading(-80)
    circle(30, 40)
    circle(40, 80)


def setting():
    """设置参数"""
    pensize(4)
    # 隐藏海龟
    hideturtle()
    colormode(255)
    color((255, 155, 192), "pink")
    setup(840, 500)
    speed(10)


def main():
    """主函数"""
    setting() 
    nose(-100, 100)
    head(-69, 167)
    ears(0, 160)
    eyes(0, 140)
    cheek(80, 10)
    mouth(-20, 30)
    done()


if __name__ == '__main__':
    main()