python--turtle库(纯干货教程)

目录
收起
导入库:
正方形:
turtle常用函数
海龟动作
移动和绘制:
1.向前、向后:
2.圆、多边形、部分现状
3.移动到绝对位置
4.将小海龟移动到指定的绝对坐标位置上
5.设置绝对方向
6.设置相对方向
7.turtle.speed(speed = None)
8.turtle.dot(size=None, *color)
9.turtle.home()
画笔控制
绘图状态
1.设置画笔宽度与颜色属性
2.turtle.penup()、turtle.pu()、turtle.up() 画笔抬起 -- 移动时不画线。
3.turtle.pendown()、turtle.pd()、turtle.down() 画笔落下 -- 移动时将画线。
颜色控制:
1.turtle.pencolor(颜色):设置画笔勾线颜色,无参数则返回当前画笔颜色(也是海龟外轮廓颜色)
2.turtle.fillcolor(颜色):返回或设置画笔填充颜色(设置后海龟箭头内部填充也是此颜色)
3>turtle.color(画笔颜色,填充颜色):设置画笔勾线颜色和填充颜色,无参数则返回当元组格式的前画笔颜色和填充色数据
填充
1.turtle.begin_fill()在绘制要填充的形状之前调用
2.turtle.end_fill() 填充上次调用 begin_fill()之后绘制的形状。
颜色:
举例 草和太阳绘图
彩色螺旋绘图实例
综合实例草地绘图
画笔文本输出
turtle窗体命令:
窗口控制:
1.turtle.setworldcoordinates(llx, lly, urx, ury)
2.turtle.setup(宽,高,左,上):输入宽和高为整数时,表示像素;小于1的小数时,表示占据电脑屏幕的比例,表示窗口左上角距屏幕左边和定边的距离
3.turtle.screensize(宽,高,背景颜色):设置窗体大小及背景色
4.turtle.bgpic(picname=None)
5.turtle.clear()或turtle.clearscreen()
6.turtle.reset()或turtle.resetscreen(): 重置屏幕上的所有海龟为其初始状态。
设置与特殊方法:
1.turtle.mode(mode=None)
2.turtle.window_height(): 返回海龟窗口的高度。
3.turtle.window_width(): 返回海龟窗口的宽度。
动画控制:
1.turtle.delay(delay=None)
2.turtle.tracer(n=None, delay=None)
3.turtle.update()
综合实例:
科赫曲线绘图

导入库:

  1. import 库名:导入整个库文件
  2. import 库名[as 别名]:导入整个库文件,并指定库别名
  3. from 库名 import [函数名]:导入指定文件的函数
  4. from 库名 import *:导入指定文件所有函数
  5. from 库名 import函数名[as 函数别名]:导入指定文件的函数,并指定函数别名
    turtle绘图实例

正方形:

import turtle as t
t.setup(300, 200)    # 设置窗口大小
for i in range(4):
    t.right(90)     # 当前位置向右转90度
    t.forward(50)   # 向前50点
t.done()

turtle常用函数

海龟动作

移动和绘制:

1.向前、向后:

turtle.forward(距离)
turtle.fd(距离)   # 小海龟向前移动的点数


turtle.backward(距离)
turtle.back(距离)
turtle.bk(距离)   # 小海龟后退移动点数

举例:

t.setup(300, 200)    # 设置窗口大小
for i in range(4):
    t.right(90)     # 当前位置向右转90度
    t.backward(30)
    t.forward(50)   # 向前50点
t.done()

2.圆、多边形、部分现状

turtle.circle(半径,角度,边数)

  • 半径:指定形状的半径,如果为正数则以左方半径距离为圆心,逆时针旋转,否则以右方为圆心顺时针旋转
  • 角度:所绘形状只绘制指定角度部分
  • 边数:所绘制的原型不是光滑的圆,由指定变数组成
t.setup(600, 400)
t.circle(100)
t.circle(100)   # 绘制半径100
t.circle(100, 360, 8)   # 绘制半径100的八边形
t.circle(100, 360, 4)   # 绘制对角线100的正方形
t.done()
for i in range(4):
    t.circle(20 + i * 20, 360, 5)
t.circle(100)
t.circle(-120)
t.done()
for i in range(10):
    t.circle(i * 10, 180)
t.done()

3.移动到绝对位置

turtle.goto(x, y)
turtle.setpos(x, y)
turtle.setposition(x, y)

4.将小海龟移动到指定的绝对坐标位置上

turtle.setx(x)  # 设置移动到横坐标的x,纵坐标不变的位置
turtle.sety(y)  # 设置移动到横坐标不变,纵坐标为y的位置

5.设置绝对方向

turtle.seth(角度) # 设置小海龟的绝对方向

standard模式、world模式:以右方向为0度,角度逆时针旋转为正度数

logo模式:以向上方向为0度,角度顺时针旋转为正度数

6.设置相对方向

turtle.left(角度)
turtle.lt(角度)       # 小海龟的现有方向下左转指定度数
turtle.right(角度)
turtle.rt(角度)       # 小海龟的现有方向下右转指定度数

实例:

turtle.seth(45)
for i in range(50):
    turtle.lt(90)
    turtle.fd(i * 2)
turtle.done()
for i in range(100):
    turtle.lt(92)
    turtle.fd(i)
turtle.done()
for i in range(100):
    turtle.left(90)
    turtle.fd(i)
turtle.done()
for i in range(5):
    turtle.left(144)
    turtle.fd(100)
turtle.done()

7.turtle.speed(speed = None)

设置海龟移动的速度为 0..10 表示的整型数值。如未指定参数则返回当前速度。

如果输入数值大于 10 或小于 0.5 则速度设为 0。速度字符串与速度值的对应关系如下:

  • "fastest": 0 最快
  • "fast": 10 快
  • "normal": 6 正常
  • "slow": 3 慢
  • "slowest": 1 最慢

速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。

print(turtle.speed())
turtle.speed("normal")
print(turtle.speed())
turtle.speed(9)
print(turtle.speed())

8.turtle.dot(size=None, *color)

  • size -- 一个整型数 >= 1 (如果指定)
  • color -- 一个颜色字符串或颜色数值元组

绘制一个直径为 size,颜色为 color 的圆点。如果 size 未指定,则直径取 pensize+4 和 2*pensize 中的较大值。

import turtle
turtle.dot(50, 'green')
turtle.done()

9.turtle.home()

海龟移至初始坐标 (0,0),并设置朝向为初始方向

import turtle
turtle.forward(90)
turtle.home()
turtle.left(90)
turtle.forward(90)
turtle.done()

画笔控制

绘图状态

1.设置画笔宽度与颜色属性

1.turtle.pensize(宽度)turtle.width(宽度):设置或返回画笔的宽度,单位:点

turtle.pensize()
print(turtle.pensize())
turtle.pensize(10)
print(turtle.pensize())

2.turtle.penup()、turtle.pu()、turtle.up() 画笔抬起 -- 移动时不画线。

3.turtle.pendown()、turtle.pd()、turtle.down() 画笔落下 -- 移动时将画线。

颜色控制:

1.turtle.pencolor(颜色):设置画笔勾线颜色,无参数则返回当前画笔颜色(也是海龟外轮廓颜色)

  • 颜色可以是颜色色号或颜色字符串,例如:“green”、“red”,也可以是RGB3元组,例如:(0.2,0.5,0.5)
print(turtle.colormode())
print(turtle.pencolor())
turtle.pencolor("brown")
print(turtle.pencolor())
tup = (0.2, 0.8, 0.55)
turtle.pencolor(tup)
print(turtle.pencolor())
turtle.colormode(255)
print(turtle.pencolor())
turtle.pencolor("#32c18f")
print(turtle.pencolor())

2.turtle.fillcolor(颜色):返回或设置画笔填充颜色(设置后海龟箭头内部填充也是此颜色)

turtle.fillcolor("violet")
print(turtle.fillcolor())
print(turtle.pencolor())
turtle.fillcolor((0.2, 0.8, 0.55))
print(turtle.fillcolor())
turtle.fillcolor('#ffffff')
print(turtle.fillcolor())

3>turtle.color(画笔颜色,填充颜色):设置画笔勾线颜色和填充颜色,无参数则返回当元组格式的前画笔颜色和填充色数据

turtle.color("red", "green")
print(turtle.color())
turtle.color("#285078", "#a0c8f0")
print(turtle.color())

填充

1.turtle.begin_fill()在绘制要填充的形状之前调用

2.turtle.end_fill() 填充上次调用 begin_fill()之后绘制的形状。

turtle.color("black", "red")
turtle.begin_fill()
turtle.circle(80)
turtle.end_fill()

颜色:

1.色号字符串:例如:“#285078”。注意类型为字符串

2.色名字符串:例如:“red”、“magenta”、"cyan"、"black"

3.rgb三元组:例如:(0.2,0.5,0.5)分别为红绿蓝颜色级别

turtle.colormode(cmode = None) cmode -- 数值1.0或255其中之一

返回颜色模式或将其设为 1.0 或 255。构成颜色三元组的 r, g, b 数值必须在 0..cmode 范围之内

举例 草和太阳绘图

import turtle
turtle.speed(10)
turtle.color("green")
turtle.right(120)
for i in range(20):
    turtle.left(1)
    turtle.forward(2 * i)
    turtle.pensize(i)
turtle.penup()
turtle.goto(-100, -50)
turtle.pendown()
turtle.pensize(1)
turtle.color("yellow", "red")
for i in range(38):     # 画小花花
    turtle.left(144)
    turtle.circle(100, 70)
turtle.end_fill()
turtle.penup()
turtle.goto(200, 200)
turtle.pendown()
turtle.pensize(3)
turtle.color("black", "red")
turtle.begin_fill()
turtle.left(120)
turtle.circle(80)
turtle.end_fill()

彩色螺旋绘图实例

import turtle
turtle.colormode(255)
for i in range(100):
    turtle.left(90)
    turtle.color((255 - 2 * i, i, i * 2))
    turtle.forward(i)
turtle.forward(120)
for i in range(100):
    turtle.left(90)
    turtle.color((255 - 2 * i, i * 2, i))
    turtle.forward(i)
turtle.forward(120)
for i in range(100):
    turtle.left(90)
    turtle.color((255 - i, 255 - i, i))
    turtle.forward(i)

综合实例草地绘图

import turtle
def f1():
    a = random.randint(-5, 5)
    for ii in range(10, 1, -1):
        turtle.left(a)
        turtle.pensize(ii)
        turtle.forward(3 * ii)



turtle.color("green")
#turtle.tracer(0)
for j in range(50):
    turtle.penup()
    turtle.sety(0)
    turtle.setx(random.randint(-300, 400))
    turtle.seth(random.randint(45, 135))
    turtle.pendown()
    f1()
turtle.done()

画笔文本输出

turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal'))

  • arg -- 要书写到 TurtleScreen 的对象
  • move -- True/False 。True表示画笔从文本下边align所在位置一直绘制到文本右下方,默认False不绘制
  • align -- 字符串 "left", "center" 或 "right"。当前位置位于文本的位置
  • font -- 一个三元组 (fontname, fontsize, fonttype)。 文本格式
import turtle
turtle.write("有下划线", True)
turtle.write("无下划线", False, font=('宋体', 15, 'bold'))
turtle.sety(-30)
turtle.write("有下划线", True)
turtle.write("无下划线", False, font=('宋体', 15, 'bold'))
turtle.sety(-100)
turtle.write("right", align='right', font=('黑体', 20, 'bold'))
turtle.sety(-120)
turtle.write("left", align='left', font=('黑体', 20, 'bold'))
turtle.sety(-160)
turtle.write("center", align='center', font=('黑体', 20, 'bold'))
turtle.done()

turtle窗体命令:

窗口控制:

1.turtle.setworldcoordinates(llx, lly, urx, ury)

设置自定义窗体坐标,模式自动改为world模式。

turtle.setup(300, 200)
turtle.setworldcoordinates(0, 0, 10, 10)
turtle.goto(1, 1)
for i in range(4):
    turtle.forward(8)
    turtle.left(90)
turtle.done()

2.turtle.setup(宽,高,左,上):输入宽和高为整数时,表示像素;小于1的小数时,表示占据电脑屏幕的比例,表示窗口左上角距屏幕左边和定边的距离

3.turtle.screensize(宽,高,背景颜色):设置窗体大小及背景色

4.turtle.bgpic(picname=None)

设置背景图片或返回当前背景图片名称。如果 picname 为一个文件名,则将相应图片设为背景。如果 picname 为 "nopic",则删除当前背景图片。如果 picname 为 None,则返回当前背景图片文件名。

5.turtle.clear()或turtle.clearscreen()

清空turtle窗口,但是turtle的位置好状态不会改变, 从中删除所有海龟的全部绘图。将已清空的 TurtleScreen 重置为初始状态: 白色背景,无背景片,无事件绑定并启用追踪。

6.turtle.reset()或turtle.resetscreen(): 重置屏幕上的所有海龟为其初始状态。

设置与特殊方法:

1.turtle.mode(mode=None)

mode -- 字符串 "standard", "logo" 或 "world" 其中之一

设置海龟模式 ("standard", "logo" 或 "world") 并执行重置。如未指定模式则返回当前的模式。

2.turtle.window_height(): 返回海龟窗口的高度。

3.turtle.window_width(): 返回海龟窗口的宽度。

动画控制:

1.turtle.delay(delay=None)

设置或返回以毫秒数表示的延迟值 delay。(这约等于连续两次画布刷新的间隔时间。) 绘图延迟越长,动画速度越慢。

2.turtle.tracer(n=None, delay=None)

启用/禁用海龟动画并设置刷新图形的延迟时间。如果指定 n 值,则只有每第 n 次屏幕刷新会实际执行。(可被用来加速复杂图形的绘制。) 如果调用时不带参数,则返回当前保存的 n 值。第二个参数设置延迟值,n为0则直接显示结果

3.turtle.update()

执行一次 TurtleScreen 刷新。在禁用追踪时使用。

综合实例:

科赫曲线绘图

import turtle
a = 2
turtle.speed(0)
turtle.tracer(0)
turtle.penup()
turtle.goto(-200, 100)
turtle.pendown()
turtle.color('black', 'cyan')
turtle.begin_fill()
for x in (0, 120, 120):
    turtle.right(x)
    for m in (0, 60, -120, 60):
        turtle.left(m)
        for y in (0, 60, -120, 60):
            turtle.left(y)
            for k in (0, 60, -120, 60):
                turtle.left(k)
                for j in (0, 60, -120, 60):
                    turtle.left(j)
                    turtle.update()
                    for i in (0, 60, -120, 60):
                        turtle.left(i)
                        turtle.forward(a)
turtle.end_fill()
turtle.done()