0
点赞
收藏
分享

微信扫一扫

【模块使用】turtle库的使用及实例演示

大漠雪关山月 2022-02-20 阅读 48
python

Python\模块使用\turtle库

1. turtle库-概念

1.1 turtle库-对turtle库的定义

1.1.1 turtle库-什么是turtle库?

1.2 turtle库-turtle库坐标系统

1.2.1 turtle库-standard坐标角度系统

在这里插入图片描述

1.2.2 turtle库-logo坐标角度系统

在这里插入图片描述

# 切换坐标、角度系统
# mode('standard')
mode('logo')

2. turtle库-使用

2.1 turtle库-引入turtle库的三种方式

2.1.1 方式①:import turtle (直接引用)

import turtle

turtle.forward(100) # 画笔向所指定方向(默认向右)前进 100 px(px即pixel,分辨率单位,代表像素)

2.1.2 方式②:import turtle as t (替代式引用)

import turtle as t

t.forward(100)

2.1.3 方式③:from turtle import * (省略式引用)

from turtle import *

forward(100)

2.2 turtle库-画布与窗口

2.2.1 画布-screensize() 函数设置画布大小及背景色

import turtle


# turtle.screensize()即画布默认值=长:400,宽:300,背景颜色:白色
turtle.screensize()
turtle.done()  			# 停止画笔绘制,但绘图窗口不关闭

# 写出参数名称
turtle.screensize(canvwidth=800, canvheight=400, bg="green")
turtle.done()               # 停止画笔绘制,但绘图窗口不关闭

# 省略参数名称
turtle.screensize(800, 400, "red")
turtle.done()               # 停止画笔绘制,但绘图窗口不关闭

在这里插入图片描述

2.2.2 窗口(窗体)-turtle.setup() 函数设置窗口大小及位置

import turtle

turtle.screensize(800,400,"blue") # 此时窗口大小仍为(400,300),画布大小变为(800,400)
turtle.setup(800,400)		      # 此时窗口大小变为为(800,300),位于屏幕中心
turtle.done()                     # 停止画笔绘制,但绘图窗口不关闭
import turtle


# 宽高使用整数时
turtle.setup(800,400)       # 此时窗口大小变为为(800,400),位于屏幕中心
turtle.done()               # 停止画笔绘制,但绘图窗口不关闭

turtle.setup(800,400,0,0)   # 此时窗口大小变为为(800,400),位于屏幕左上角
turtle.done()               # 停止画笔绘制,但绘图窗口不关闭

在这里插入图片描述

import turtle


# 宽高使用小数时
turtle.setup(1.0,1.0)       # 使用默认画布设置,窗口占据整个屏幕
turtle.done()               # 停止画笔绘制,但绘图窗口不关闭
turtle.setup(1.0,0.5)       # 使用默认画布设置,窗口横向占据半个屏幕
turtle.done()               # 停止画笔绘制,但绘图窗口不关闭

在这里插入图片描述

2.3 turtle库-画笔参数

2.3.1 宽度-pensize()函数设置画笔的粗细

import turtle           # 导入tuetle库


# 设置画笔粗细(若未指定fan方向,画笔默认向右)
turtle.pensize(10)       # 画笔的尺寸为10
turtle.pensize(50)		      
turtle.pensize(100)		

在这里插入图片描述

2.3.2 颜色-pencolor()函数设置画笔的颜色

关于画笔颜色和填充颜色三原色值(红色值Red,绿色值 Green,蓝色值 Blue)
white:白色(255,255,255)
balck:黑色(0,0,0)
red:红色(255,0,0)
green:绿色(0,255,0)
bule:蓝色(0,0,255)
grey:灰色(128,128,128)
purple:紫色(255,0,255)
yellow:黄色(255,255,0)
import turtle           # 导入tuetle库


turtle.pencolor()  		# 画笔默认颜色为黑色
turtle.pencolor("red")  
turtle.pencolor("blue")  

在这里插入图片描述

2.3.3 移速-turtle.speed()函数设置画笔移动速度

import turtle           # 导入tuetle库


turtle.speed(1)			 # 画笔移动速度为1
turtle.speed(speed=5)
turtle.speed(speed=10)

2.4 turtle库-常用绘图函数

2.4.1 done()函数-停止画笔绘制,但绘图窗口不关闭

import turtle

turtle.forward(100)
turtle.done()
turtle.left(60)
turtle.forward(100)

在这里插入图片描述

2.4.2 forward()函数-向当前画笔方向移动distance个像素长度

import turtle           # 导入tuetle库

turtle.forward(distance=100)     # 画笔以默认向右的方向绘制长度为100px
turtle.forward(100)     		 # 省略参数名称
turtle.done()                    # 停止画笔绘制,但绘图窗口不关闭

在这里插入图片描述

2.4.3 backward()函数-向当前画笔相反方向移动distance个像素长度

import turtle
turtle.backward(distance=100)
turtle.backward(100)			# 省略参数名称
turtle.done()                   # 停止画笔绘制,但绘图窗口不关闭

在这里插入图片描述

2.4.4 right()函数-顺时针移动degree度

import turtle

turtle.right(60)			# 以标准坐标系为参照,箭头先方向顺时针旋转60°
turtle.forward(100)			# 再移动100px的长度
turtle.done()               # 停止画笔绘制,但绘图窗口不关闭

在这里插入图片描述

2.4.5 left()函数-逆时针移动degree度

import turtle

turtle.left(60)			    # 以标准坐标系为参照,箭头先方向逆时针旋转60°
turtle.forward(100)			# 再移动100px的长度
turtle.done()               # 停止画笔绘制,但绘图窗口不关闭

在这里插入图片描述

2.4.6 penup()函数-抬起画笔不显示移动轨迹

import turtle

turtle.penup()  # 抬起画笔
turtle.forward(100)
turtle.done()

在这里插入图片描述

2.4.7 pendown()函数-落下画笔显示移动轨迹

import turtle


turtle.forward(50)


turtle.penup()          # 抬起画笔
turtle.forward(50)


turtle.pendown()        # 落下画笔
turtle.forward(50)


turtle.done()

在这里插入图片描述

2.4.8 goto()函数-从原点移动轨迹到指定坐标

import turtle


turtle.goto(100,200)
turtle.done()

在这里插入图片描述

2.4.9 circle()函数-画出半径为r的圆

import turtle

turtle.pendown()
turtle.circle(r=100)	# 省略名称后则可以直接写turtle.circle(100)
turtle.penup()

turtle.pendown()
turtle.circle(r=-100)
turtle.penup()
turtle.done()

在这里插入图片描述

2.4.10 turtle.shape(’)函数-画笔箭头变成小乌龟

import turtle

turtle.shape("turtle")
turtle.forward(100)
turtle.done()

在这里插入图片描述

2.4.11 hideturtle()函数-隐藏画笔箭头

import turtle

turtle.hideturtle()
turtle.forward(100)
turtle.done()

在这里插入图片描述

2.4.12 showturtle()函数-显示画笔箭头

import turtle

# 隐藏箭头,显示轨迹
turtle.pendown() 
turtle.hideturtle()
turtle.forward(100)

# 隐藏箭头,隐藏轨迹
turtle.penup()
turtle.forward(100)

# 显示箭头,显示轨迹
turtle.pendown()
turtle.showturtle()
turtle.forward(100)

turtle.done()

在这里插入图片描述

2.4.13 fillcolor()函数、begin_fill()函数、end_fill()函数-给绘制的图形填充颜色

import turtle 


turtle.fillcolor('green')  # 设置填充的颜色

turtle.begin_fill()        # 开始填充颜色
for j in range(4):
    turtle.forward(100)
    turtle.left(90)
turtle.end_fill()          # 结束填充颜色
turtle.done()

在这里插入图片描述

2.4.14 turtle.color(color1, color2)函数-同时设置画笔颜色、填充颜色

import turtle 


turtle.color("red","blue")  # 画笔颜色设置为红色,填充颜色设置为蓝色

turtle.begin_fill()  # 开始填充颜色
for j in range(4):
    turtle.forward(100)
    turtle.left(90)
turtle.end_fill()  # 结束填充颜色
turtle.done()

在这里插入图片描述

2.4.15turtle.write()函数-写文字

import turtle

import turtle

turtle.write(arg="他朝若是同淋雪,此生也算共白头", move=False, align='left', font=('Arial', 16, 'normal'))
turtle.hideturtle()
turtle.done()

在这里插入图片描述

2.5 turtle库-实例演示

2.5.1 实例演示-五色填正方形组合图案

import turtle 


def drawRect():
    turtle.hideturtle()
    turtle.pendown()
    for i in range(4):
        turtle.forward(100)
        turtle.left(90)
        turtle.speed(10)
    turtle.penup()


def main():
    clrs = ['red', 'green', 'blue', 'gray', 'brown']  # 颜色列表
    for i in range(10):
        turtle.fillcolor(clrs[i % 5])                      # 从列表中选择颜色
        turtle.begin_fill()                                # 开始填充
        drawRect()
        turtle.end_fill()                                  # 结束填充
        turtle.right(36)

    turtle.done()


if __name__ == '__main__':
    main()

在这里插入图片描述

2.5.2 实例演示-五角星

# coding=utf-8
import turtle
import time

turtle.pensize(5)
turtle.pencolor("yellow")
turtle.fillcolor("red")

turtle.begin_fill()
for _ in range(5):
  turtle.forward(200)
  turtle.right(144)
turtle.end_fill()
time.sleep(2)

turtle.penup()
turtle.goto(-150, -120)
turtle.color("violet")
turtle.write("Done", font=('Arial', 40, 'normal'))

turtle.done()

在这里插入图片描述

2.5.3 实例演示-将文字显示为一个圆圈

#将文字显示为一个圆圈
import turtle
text = "醉后不知天在水,满船清梦压星河"
turtle.penup()          # 可简写为pu
x = len(text)
for i in text:
    turtle.write(i, font='consolas')
    turtle.right(360/x)  # 可简写为rt
    turtle.penup()
    turtle.forward(30)   # 可简写为fd
turtle.hideturtle()
turtle.done()

在这里插入图片描述

2.5.4 实例演示-时钟

# coding=utf-8

import turtle
from datetime import *

# 抬起画笔,向前运动一段距离放下


def Skip(step):
    turtle.penup()
    turtle.forward(step)
    turtle.pendown()


def mkHand(name, length):
    # 注册Turtle形状,建立表针Turtle
    turtle.reset()
    Skip(-length * 0.1)
    # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
    turtle.begin_poly()
    turtle.forward(length * 1.1)
    # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
    turtle.end_poly()
    # 返回最后记录的多边形。
    handForm = turtle.get_poly()
    turtle.register_shape(name, handForm)


def Init():
    global secHand, minHand, hurHand, printer
    # 重置Turtle指向北
    turtle.mode("logo")
    # 建立三个表针Turtle并初始化
    mkHand("secHand", 135)
    mkHand("minHand", 125)
    mkHand("hurHand", 90)
    secHand = turtle.Turtle()
    secHand.shape("secHand")
    minHand = turtle.Turtle()
    minHand.shape("minHand")
    hurHand = turtle.Turtle()
    hurHand.shape("hurHand")

    for hand in secHand, minHand, hurHand:
        hand.shapesize(1, 1, 3)
        hand.speed(0)

    # 建立输出文字Turtle
    printer = turtle.Turtle()
    # 隐藏画笔的turtle形状
    printer.hideturtle()
    printer.penup()


def SetupClock(radius):
    # 建立表的外框
    turtle.reset()
    turtle.pensize(7)
    for i in range(60):
        Skip(radius)
        if i % 5 == 0:
            turtle.forward(20)
            Skip(-radius - 20)

            Skip(radius + 20)
            if i == 0:
                turtle.write(int(12), align="center",
                             font=("Courier", 14, "bold"))
            elif i == 30:
                Skip(25)
                turtle.write(int(i/5), align="center",
                             font=("Courier", 14, "bold"))
                Skip(-25)
            elif (i == 25 or i == 35):
                Skip(20)
                turtle.write(int(i/5), align="center",
                             font=("Courier", 14, "bold"))
                Skip(-20)
            else:
                turtle.write(int(i/5), align="center",
                             font=("Courier", 14, "bold"))
            Skip(-radius - 20)
        else:
            turtle.dot(5)
            Skip(-radius)
        turtle.right(6)


def Week(t):
    week = ["星期一", "星期二", "星期三",
            "星期四", "星期五", "星期六", "星期日"]
    return week[t.weekday()]


def Date(t):
    y = t.year
    m = t.month
    d = t.day
    return "%s %d%d" % (y, m, d)


def Tick():
    # 绘制表针的动态显示
    t = datetime.today()
    second = t.second + t.microsecond * 0.000001
    minute = t.minute + second / 60.0
    hour = t.hour + minute / 60.0
    secHand.setheading(6 * second)
    minHand.setheading(6 * minute)
    hurHand.setheading(30 * hour)

    turtle.tracer(False)
    printer.forward(65)
    printer.write(Week(t), align="center",
                  font=("Courier", 14, "bold"))
    printer.back(130)
    printer.write(Date(t), align="center",
                  font=("Courier", 14, "bold"))
    printer.home()
    turtle.tracer(True)

    # 100ms后继续调用tick
    turtle.ontimer(Tick, 100)


def main():
    # 打开/关闭龟动画,并为更新图纸设置延迟。
    turtle.tracer(False)
    Init()
    SetupClock(160)
    turtle.tracer(True)
    Tick()
    turtle.mainloop()


if __name__ == "__main__":
    main()

在这里插入图片描述

3. 参考文献

《Python绘图Turtle库详解》:https://blog.csdn.net/zengxiantao1994/article/details/76588580
《Python易学就会(三)turtle绘图》:https://blog.csdn.net/weixin_34050427/article/details/88677104
《python—turtle库的基本介绍》:https://zhuanlan.zhihu.com/p/64594462
《Turtle代码功能详解一》:https://blog.csdn.net/weixin_44527588/article/details/98302740
《setup和screensize》:https://blog.csdn.net/piglite/article/details/105332460
《Python turtle.write()用法及代码示例》:https://vimsky.com/examples/usage/turtle-write-function-in-python.html
《turtle.write方法使用说明》:https://blog.csdn.net/cnds123/article/details/113915180

举报

相关推荐

0 条评论