Python\模块使用\turtle库
- 1. turtle库-概念
- 2. turtle库-使用
- 2.1 turtle库-引入turtle库的三种方式
- 2.2 turtle库-画布与窗口
- 2.3 turtle库-画笔参数
- 2.4 turtle库-常用绘图函数
- 2.4.1 done()函数-停止画笔绘制,但绘图窗口不关闭
- 2.4.2 forward()函数-向当前画笔方向移动distance个像素长度
- 2.4.3 backward()函数-向当前画笔相反方向移动distance个像素长度
- 2.4.4 right()函数-顺时针移动degree度
- 2.4.5 left()函数-逆时针移动degree度
- 2.4.6 penup()函数-抬起画笔不显示移动轨迹
- 2.4.7 pendown()函数-落下画笔显示移动轨迹
- 2.4.8 goto()函数-从原点移动轨迹到指定坐标
- 2.4.9 circle()函数-画出半径为r的圆
- 2.4.10 turtle.shape(')函数-画笔箭头变成小乌龟
- 2.4.11 hideturtle()函数-隐藏画笔箭头
- 2.4.12 showturtle()函数-显示画笔箭头
- 2.4.13 fillcolor()函数、begin_fill()函数、end_fill()函数-给绘制的图形填充颜色
- 2.4.14 turtle.color(color1, color2)函数-同时设置画笔颜色、填充颜色
- 2.4.15turtle.write()函数-写文字
- 2.5 turtle库-实例演示
- 3. 参考文献
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