本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢!
文章目录
一、前言
本文介绍python之turtle库中常用的一些方法。
-
什么是Python?
Python是由荷兰人吉多·范罗苏姆于1990年代初设计的一门编程语言,应用领域非常广泛,尤其在数据分析、人工智能、游戏开发等领域,已经成为最受欢迎的程序设计语言之一,比较适合新手学习。
这门编程语言之所以叫Python,意为大蟒蛇,是因为当时有一个电视喜剧《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)在热播,很受大家喜欢。
Python 官方使用手册:https://docs.python.org/zh-cn/3/library/turtle.html#turtle-methods
-
什么是海龟画图工具turtle?
turtle,中文意思为海龟,是Python语言中自带的一个用于绘制图像的函数库。turtle函数库为使用者提供一个或多个小乌龟作为画笔,使用者可通过turtle库提供的各种方法来控制小乌龟在一个平面直角坐标系中移动并绘制移动轨迹以画出想要的图案。
由于turtle的命令非常简单,使用起来非常方便。所以,非常适合初学者学习Python绘图。
二、如何导入turtle库
使用turtle库之前,需要导入turtle库,以下介绍三种方法:
方法一:import turtle
这种方法在之后每次引用turtle库里面的函数都需要在函数之前添加“库名.”
import turtle
# 画笔基础设置
turtle.setup(800, 800)
turtle.pensize(5)
方法二:使用from和import保留字共同完成
格式:from turtle improt * ( *表示添加turtle库中所有方法)
这种方法在函数调用时不用写 “库名.” ,但是如果有其他同名函数,会造成函数的多次定义。
from turtle import*
# 画笔基础设置
setup(800, 800)
pensize(5)
方法三:使用import和as保留字共同完成
格式:import 库名 as 库别名
这种方法使用别名,可以减少调用函数时库名过于冗长而造成的工作量,也可避免造成函数的多重定义。
import turtle as t
# 画笔基础设置
t.setup(800, 800)
t.pensize(5)
总结,这里推荐使用方法一或方法三。
三、介绍turtle库之Turtle海龟绘画常用方法
3.1 海龟移动和绘制
forward() | fd() 前进
例如: turtle.forward(25),前进25个像素
backward() | bk() | back() 后退
例如: turtle.backward(30),后退30个像素
right() | rt() 右转
例如: turtle.right(45),右转45度
left() | lt() 左转
例如: turtle.left(45),左转45度
goto() 前往
例如: turtle.goto(60,30),前往坐标值x=60,y=30的位置
setheading() | seth() 设置朝向
例如: turtle.setheading(90),设置海龟的朝向为90度方向,即正北方。(标准模式下,0,90,180,270,代表东、北、西、南)
home() 返回原点,即坐标值为(0,0),朝向为正东方(标准模式下)
例如: turtle.home(),返回原点
circle() 画圆
例如: turtle.circle(60, 180),画一个半径为60像素,夹角为180的圆(即半圆)
dot() 画点
例如: turtle.dot(20, "blue"),绘制一个直径为20像素,颜色为blue的圆点;
speed() 设置移动速度,其中1到10代表从慢到快,还有特殊数字0代表最快;也可以使用英文表示;
例如:
turtle.speed(6),设置移动速度为6,代表正常速度;
turtle.speed('fast'),代表速度快;
distance() 计算移动的距离
例如:
joe = Turtle()
joe.forward(77)
turtle.distance(joe)
3.2 海龟画笔控制
pendown() | pd() | down() 画笔落下,移动时将画线
例如: turtle.pendown(),画笔落下,开始画线;
penup() | pu() | up() 画笔抬起,移动时不画线
例如: turtle.penup(),画笔抬起,停止画线;
pensize() | width() 设置画笔线条粗细
例如: turtle.pensize(10) 设置画笔线条粗细为10个像素;
color() 返回或设置画笔颜色和填充颜色
例如: turtle.color("red", "green"),设置画笔颜色为red,图形填充颜色为green;
begin_fill() 开始填充
例如: begin_fill() ,开始填充图形颜色;
end_fill() 结束填充
例如: end_fill(),结束填充图形颜色;
pencolor() 返回或设置画笔颜色
例如: pencolor("red"),设置画笔颜色为red;
fillcolor() 返回或设置填充颜色
例如: fillcolor("green"),设置图形填充颜色为green;
四、介绍turtle库之Screen窗体常用方法
4.1 窗口控制
bgcolor() 设置窗口背景颜色
例如: screen.bgcolor("orange") 设置窗口背景颜色为orange
bgpic() 设置窗口背景图片
例如: screen.bgpic("../aab.gif"),设置窗口背景图片
screensize() 设置窗口屏幕大小
例如: screen.screensize(400,300) 设置窗口屏幕大小,宽度为400像素,高度为300像素
title() 设置窗口标题
例如: screen.title("Welcome!") 设置窗口标题为Welcome!
setup() 设置主窗口大小和位置
例如: screen.setup (width=200, height=400, startx=0, starty=0) 设置主窗口宽度为200像素,高度为400像素,坐标X为0,坐标y为0
4.2 动画控制
tracer() 追踪,即启用/禁用海龟动画并设置刷新图形的延迟时间。如果指定 n 值,则只有每第 n 次屏幕刷新会实际执行。(可被用来加速复杂图形的绘制。)
例如: turtle.tracer(0)
update() 执行一次 TurtleScreen 刷新。在禁用追踪时使用,即turtle.tracer(0)时使用。
例如: turtle.update()
delay() 设置动画延迟时间,即设置或返回以毫秒数表示的延迟值 delay。(这约等于连续两次画布刷新的间隔时间。) 绘图延迟越长,动画速度越慢。
例如: screen.delay(5),设置动画颜色时间为5毫秒
4.2 屏幕事件
listen() 监听,用来监听屏幕事件是否发生。
例如: screen.listen() 开始监听屏幕事件,比如鼠标点击事件等等;
onclick() | onscreenclick() 当点击屏幕
例如: screen.onclick(fun) 当点击鼠标时,触发相应的事件;
mainloop() | done() 主循环,开始事件循环 - 调用 Tkinter 的 mainloop 函数。必须作为一个海龟绘图程序的结束语句。
例如: screen.mainloop()
onkey() | onkeyrelease() 当键盘按下并释放
例如: screen.onkey(fun, "Up"),当按下向上键时,触发相应的事件;
五、简单示例
下面我们写一个简单示例,使用turtle画图工具,画一张简笔画笑脸。
完整代码如下:
# 导入海龟画笔函数库
import turtle
"""
笑脸简笔画
@author 姑苏老陈
@date 2024-06-04
"""
# 创建画布对象
myScreen = turtle.Screen()
# 设置画布大小和位置
myScreen.setup(600,600,40,60)
# 设置画布标题
myScreen.title("hello")
# 创建海龟画笔对象
myTurtle = turtle.Turtle()
# 设置画笔线条宽度
myTurtle.pensize(6)
# 设置画笔颜色
myTurtle.color('black')
# 画脸蛋
myTurtle.pendown()
myTurtle.circle(100)
myTurtle.penup()
# 画左眼
myTurtle.goto(-30, 120)
myTurtle.pendown()
myTurtle.left(90)
myTurtle.circle(12, 180)
myTurtle.penup()
# 画右眼
myTurtle.goto(40, 120)
myTurtle.pendown()
myTurtle.left(180)
myTurtle.circle(12, 180)
myTurtle.penup()
# 画嘴巴
myTurtle.goto(-40, 80)
myTurtle.pendown()
myTurtle.circle(35, 180)
# 隐藏画笔
myTurtle.hideturtle()
# 屏幕事件循序,保持窗口打开
myScreen.mainloop()
代码运行效果图如下:
六、总结
以上介绍了python之turtle库中常用的一些方法,并提供了对应的示例代码。希望对大家有帮助,谢谢。
PS:Turtle绘画库常用方法脑图整理如下
如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)