一、Turtle库是什么

Turtle库是Python里面的一个基础绘图库

二、如何使用Turtle库

1.导入Turtle库

import turtle

2.设置绘图窗口

用turtle.setup()函数来创建一个绘图窗口

width, height, startx, starty四个参数分别表示窗口的宽度,高度,窗口在屏幕上的x坐标,y坐标

如果只输入宽度和高度的话,默认窗口在屏幕中心

turtle.setup(600,600)

用turtle.title()函数设置窗口标题

turtle.title("Welcome to Turtle")

3.绘图

正常来说,我们想要绘图的话,肯定得先有笔和纸,绘图窗口就是我们的纸,接下来我们需要设置我们用来绘图的画笔

(1)画笔的设置

画笔有三种属性,一种是宽度,另一种是颜色,以及画笔的速度

我们可以用pensize()函数设置画笔的宽度

pensize(2)
#也可以用turtle.width(2)

用pencolor(color)函数设置画笔的颜色

pencolor(red)
#也可以用turtle.color(“red”)

colormode(255)函数可以用于设置颜色模式为RGB整数模式(3个参数分别代表R,G,B)

colormode(255)
pencolor(45,100,50)
#R:红色强度
#G:绿色强度
#B:蓝色强度

用turtle.speed()函数设置画笔的宽度

turtle.speed(1)
#参数为应为10的倍数,0为最大速度

(2)画笔的空间移动

在Turtle库中,画笔分为两种状态,抬起和放下,只有当画笔放下时才能在窗口上留下痕迹

#抬起画笔
turtle.penup()
#放下画笔
turtle.pendown()

我们通过turtle.goto()函数来让改变画笔在窗口上的坐标,这个函数有两个参数分别对应x,y坐标

turtle.goto(-40, 20)
#让画笔移动到坐标(-40,20),其中-40是x坐标,20是y坐标

用turtle.circle()函数可以画一个圆,参数为圆的半径

turtle.circle(50)
#以当前画笔的位置为中心,绘制一个半径为 50 个单位的圆

(3)画笔的角度移动

默认情况下,画笔的初始方向朝右,对应角度为 0 度,逆时针方向为正方向。

我们都学过极坐标,根据极坐标的相关知识我们可知,只需要改变两个参数就可以让画笔以不同的角度进行移动

#设置画笔的方向,其中angle是角度值,如 90 度表示向上
turtle.setheading(angle)
#让画笔向左或向右转动指定的角度
turtle.left(angle)
turtle.right(angle)
#让画笔向当前方向前进或后退指定的距离
turtle.forward(distance)
turtle.backward(distance)

在画圆的基础上画个圆弧吧,画圆弧只比画圆多了一个角度的参数,角度为正值表示逆时针绘制,为负值表示顺时针绘制

turtle.circle(50, 60)

(4)其他常用函数

done()
#保持绘图窗口的显示,防止图形绘制完成后窗口自动关闭。

clear()
#清空窗口,但画笔的位置和状态不变。

reset()
#清空窗口,并重置画笔状态为起始状态。

undo()
#撤销上一个绘图动作。

isvisible()
#返回当前画笔是否可见。

fillcolor(color)
#设置图形的填充颜色。

begin_fill()
#开始填充图形。

end_fill()
#结束填充图形。

hideturtle()
#隐藏画笔的海龟形状。

showturtle()
#显示画笔的海龟形状。

dot(d, color)
#绘制一个指定直径d和颜色(可选)的圆点。

write(x, font=("name", size, "type"))
#写出文本,x为文本内容,font参数指定字体名称、大小和类型。

三、绘图示例

1.画一个简单的五角星

import turtle
turtle.setup(600,600)
turtle.title("Welcome to Turtle")

turtle.up()
turtle.setx(-100)
turtle.pd()

turtle.pensize(5)
turtle.speed(1)
turtle.color("green","pink")
turtle.begin_fill()
for i in range(5):
    turtle.fd(180)
    turtle.right(144)
turtle.end_fill()
turtle.done()

运行截图如下

五角星

2.画一朵简单的玫瑰花

import turtle as t

# 定义一个曲线绘制函数
def DegreeCurve(n, r, d=1):
    for i in range(n):
        t.left(d)
        t.circle(r, abs(d))

# 初始位置设定
s = 0.2
t.setup(450*5*s, 750*5*s)
t.pencolor("black")
t.fillcolor("red")
t.speed(10000)  # 修改这里,将速度设置为整数
t.penup()
t.goto(0, 900*s)
t.pendown()

# 绘制花朵形状
t.begin_fill()
t.circle(200*s, 30)
DegreeCurve(60, 50*s)
t.circle(200*s, 30)
DegreeCurve(4, 100*s)
t.circle(200*s, 50)
DegreeCurve(50, 50*s)
t.circle(350*s, 65)
DegreeCurve(40, 70*s)
t.circle(150*s, 50)
DegreeCurve(20, 50*s, -1)
t.circle(400*s, 60)
DegreeCurve(18, 50*s)
t.fd(250*s)
t.right(150)
t.circle(-500*s, 12)
t.left(140)
t.circle(550*s, 110)
t.left(27)
t.circle(650*s, 100)
t.left(130)
t.circle(-300*s, 20)
t.right(123)
t.circle(220*s, 57)
t.end_fill()

# 绘制花枝形状
t.left(120)
t.fd(280*s)
t.left(115)
t.circle(300*s, 33)
t.left(180)
t.circle(-300*s, 33)
DegreeCurve(70, 225*s, -1)
t.circle(350*s, 104)
t.left(90)
t.circle(200*s, 105)
t.circle(-500*s, 63)
t.penup()
t.goto(170*s, -30*s)
t.pendown()
t.left(160)
DegreeCurve(20, 2500*s)
DegreeCurve(220, 250*s, -1)

# 绘制一个绿色叶子
t.fillcolor('green')
t.penup()
t.goto(670*s, -180*s)
t.pendown()
t.right(140)
t.begin_fill()
t.circle(300*s, 120)
t.left(60)
t.circle(300*s, 120)
t.end_fill()
t.penup()
t.goto(180*s, -550*s)
t.pendown()
t.right(85)
t.circle(600*s, 40)

# 绘制另一个绿色叶子
t.penup()
t.goto(-150*s, -1000*s)
t.pendown()
t.begin_fill()
t.rt(120)
t.circle(300*s, 115)
t.left(75)
t.circle(300*s, 100)
t.end_fill()
t.penup()
t.goto(430*s, -1070*s)
t.pendown()
t.right(30)
t.circle(-600*s, 35)

t.done()

运行截图如下

Rose

3.画一个简单的奥运环

import turtle

def draw_thick_circle(color, thickness, radius):
    turtle.width(thickness)
    turtle.color(color)
    turtle.circle(radius)

def main():
    # 设置初始位置和方向
    turtle.speed(0)  # 设置绘制速度为最快
    turtle.penup()

    # 绘制五个圆环的位置
    positions = [(-110, 0), (-55, 0), (0, 0), (-82.5, -50), (-27.5, -50)]
    colors = ['blue', 'black', 'red', 'yellow', 'green']
    thickness = 10  # 线条宽度

    for color, position in zip(colors, positions):
        turtle.goto(position)
        turtle.pendown()
        draw_thick_circle(color, thickness, 50)  # 绘制半径为50的圆环
        turtle.penup()

    # 隐藏turtle光标
    turtle.hideturtle()

    # 完成绘制
    turtle.done()

if __name__ == "__main__":
    main()

运行截图如下

奥运环

作者:FloWit233

物联沃分享整理
物联沃-IOTWORD物联网 » Python-Turtle库

发表回复