Turtle介绍及使用方法 Turtle库是由Python创始人之一的Guido van Rossum创建的。它最初是为了在Python中编写特定于窗口的图形图像而设计的,以便学生们可以在一个友好的环境中学习编程。
Turtle库是Python语言中一个强大的图形库,专门针对初学者设计而成,它提供了窗体、画布和海龟等基本元素,可以在画布上绘制线条、图形及动画等,支持向前、向后、左转、右转、上抬、下落、填充等基本绘图命令,通过编写简**单的命令序列,可以实现一些有趣的图形和动画效果。
创建一个画布和海龟对象**
turtle库提供了两个主要的对象,一个是画布(Screen)对象,另一个是海龟(Turtle)对象。可以使用以下命令来创建它们:
import turtle
win = turtle.Screen() # 创建一个画布
t = turtle.Turtle() # 创建一个海龟对象
**控制海龟移动**
在turtle库中,可以使用一些基本的指令来控制海龟的移动:
forward(distance):向当前方向前进指定距离
backward(distance):向相反方向后退指定距离
left(angle):向左转指定角度
right(angle):向右转指定角度
goto(x, y=None):移动海龟到指定位置
setx(x):设置海龟的x坐标
sety(y):设置海龟的y坐标
setheading(angle):设置海龟的朝向角度
circle(radius, extent=None, steps=None):绘制指定半径的圆
以下是一个简单的例子:
import turtle
win = turtle.Screen()
t = turtle.Turtle()
# 前进100个像素
t.forward(100)
# 左转90度
t.left(90)
# 后退50个像素
t.backward(50)
# 移动到(0, 0)
t.goto(0, 0)
# 绘制半径为50的圆
t.circle(50)
win.mainloop()
设置海龟属性
可以使用以下指令来设置海龟的属性:
shape(shape):设置海龟的形状,可以是’turtle’、‘arrow’、‘circle’、'square’等
color(color):设置海龟的颜色,可以是’r’、‘g’、'b’等
pensize(width):设置画笔的宽度
penup():将画笔抬起来,移动时不绘制线条
pendown():将画笔放下,移动时绘制线条
begin_fill():开始填充图形
end_fill():结束填充图形
以下是一个例子:
import turtle
win = turtle.Screen()
t = turtle.Turtle()
# 设置海龟属性
t.shape('turtle')
t.color('red')
t.pensize(3)
# 绘制三角形并填充
t.begin_fill()
for i in range(3):
t.forward(100)
t.left(120)
t.end_fill()
win.mainloop()
事件处理
可以使用turtle库提供的事件处理机制来响应鼠标、键盘等事件。下面是一个简单的例子:
import turtle
def move_forward():
t.forward(10)
def move_left():
t.left(10)
def move_right():
t.right(10)
win = turtle.Screen()
t = turtle.Turtle()
win.onkey(move_forward, 'Up')
win.onkey(move_left, 'Left')
win.onkey(move_right, 'Right')
win.listen()
win.mainloop()
在这个例子中,我们定义了三个函数来响应上、左、右键的动作,然后使用onkey()函数将这些函数与相应的键位绑定,最后使用listen()命令开始监听事件。
表白爱心源码
# -*- coding: utf-8 -*-
import turtle
import math
import time
if __name__ == '__main__':
turtle.pen()
t=turtle
t.up()
t.goto(0,150)
t.down()
t.color('red')
t.begin_fill()
t.fillcolor('red')
t.speed(1)
t.left(45)
t.forward(150)
t.right(45)
t.forward(100)
t.right(45)
t.forward(100)
t.right(45)
t.forward(100)
t.right(45)
t.forward(250+math.sqrt(2)*100)
t.right (90)
t.speed(2)
t.forward(250+100*math.sqrt(2))
t.right(45)
t.forward(100)
t.right(45)
t.forward(100)
t.right(45)
t.forward(100)
t.right(45)
t.forward(150)
t.end_fill()
t.goto(-10,0)
t.pencolor('white')
#L
t.pensize(10)
t.goto(-50,0)
t.goto(-50,80)
t.up ()
#I
t.goto(-100,0)
t.down()
t.goto(-160,0)
t.goto(-130,0)
t.goto(-130,80)
t.goto(-160,80)
t.goto(-100,80)
t.up()
#O
t.goto(10,25)
t.down()
t.right(45)
t.circle(25,extent=180)
t.goto(60,55)
t.circle(25,extent=180)
t.goto(10,25)
t.up()
t.goto(75,80)
t.down()
t.goto(100,0)
t.goto(125,80)
t.up()
t.goto(180,80)
t.down()
t.goto(140,80)
t.goto(140,0)
t.goto(180,0)
t.up()
t.goto(180,40)
t.down()
t.goto(140,40)
#U
t.up()
t.goto(-40,-30)
t.down()
t.goto(-40,-80)
t.circle(40,extent=180)
t.goto(40,-30)
t.hideturtle()
time.sleep(10)
效果图