最近博主在 CSDN 上看到许多关于海龟画图的案例,如画圣诞树、五角星等,但是都是直接给出了源码以及一些简单的注释,没有对其详细的说明,会让很多初学者迷糊很久,故这里博主详细地对 turtle 模块中的方法进行详解,让广大博友能够做到自由画图。
海龟绘图是 Python 内置的一个比较有趣的模块,模块名称为 turtle。它最初源于 20世纪60年代 的 Logo 语言,之后成为了 Python 的内置模块。海龟绘图提供了一些简单的绘图方法,可以根据编写的控制指令(代码),让一个 “海龟” 在屏幕上来回移动,而且可以在它爬行的路径上绘制图形。通过海龟绘图,不仅可以在屏幕上绘制图形,还可以看到整个绘制过程。另外,海龟绘图对初学者十分友好,它能够轻松地编写出很多有趣的实例。
海龟绘图窗口就是在运行了导入 turtle 模块并调用了绘图方法的 Python 文件后,打开的窗口。该窗口默认的宽度为屏幕的 50%,高度为屏幕的 75%,背景为白色,位于屏幕的中心位置。在绘图时,我们可以设置它的大小、颜色和初始位置等。另外,也可以设置它的标题、背景颜色、背景图片等。下面分别进行介绍。
在海龟绘图中,提供了 setup() 方法设置海龟绘图窗口的尺寸、颜色和初始位置。setup() 方法的语法如下:
def setup(self, width=_CFG["width"], height=_CFG["height"],
startx=_CFG["leftright"], starty=_CFG["topbottom"]):
参数说明:
例如,设置窗口宽度为 400,高度为 300,距离屏幕的左边缘 50 像素,上边缘 30 像素,代码如下:
turtle.setup(width=400, height=300, startx=50, starty=30)
再例如,设置宽度和高度都为屏幕的 50%,并且位于屏幕中心,代码如下:
turtle.setup(width=.5, height=.5, startx=None, starty=None)
海龟绘图的主窗口默认的标题为 “Python Turtle Graphics”,可以通过 title() 方法为其设置新的标题。title() 方法的语法如下:
def title(self, titlestring):
# titlestring: 用于指定标题内容
例如,将海龟绘图窗口的标题设置为 “绘制第一只海龟”,代码如下:
turtle.title("绘制第一只海龟")
海龟绘图的主窗口默认的背景颜色为白色,通过 bgcolor() 方法可以改变其背景颜色。bgcolor() 方法的语法格式如下:
def bgcolor(self, *args)
args 参数为可变参数,可以是一个颜色字符串 (可以使用英文颜色或者十六进制颜色值,常用的颜色字符串如下图所示),也可以是三个取值范围在 0~cmode 之间的数值 (如 1.0,0.5,0.5,分别代表 r,g,b 的值),还可以是一个取值范围相同的包括 3 个数值元素 (取值范围在 0-~cmode) 的元组 (如(1.0,0.5,0.5),分别代表 r,g,b 的值)。
说明:cmode 为颜色模式,其值为数值 1.0 或 255。海龟绘图默认为 1.0。如果想要设置为 255,可以通过以下代码设置:
turtle.colormode(255)
执行上面代码后,cmode 的值为 255,此时 args 参数可以设置为 “(192,255,128)” 或者“192,255,128"。
例如,设置窗口背景颜色为淡绿色,可以使用下面的代码:
turtle.bgcolor("lightgreen")
# ----------------------------------------
turtle.bgcolor(0.56, 0.93, 0.56)
# ----------------------------------------
turtle.colormode(255) # 设置颜色模式
turtle.bgcolor(144, 238, 144)
在海龟绘图中,可以使用 bgpic() 方法为窗口设置指定的图片作为背景。bgpic() 方法的语法如下:
def bgpic(self, picname=None)
# picname:用于指定背景图片的路径。(相对路径、绝对路径)
将要作为背景的图片放置在与 Python 文件相同的目录下,名称为 mv.png,使用下面代码将其设置为窗口的背景:
turtle.bgpic(picname='./mv.png')
运行程序:
发现报错,此时打开 http://pic.55.la/ 将图片转换为以 .gif 结尾格式的后缀即可,代码如下:
turtle.bgpic(picname='./mv.gif')
在海龟绘图中,清空屏幕上绘图主要有 3 个方法,下面分别进行介绍。
t_ufo.reset()
t_ufo.clear()
turtle.clearscreen()
注意:使用 clearscreen() 方法清空屏幕时,将海龟窗口重置为初始状态,即白色背景,无背景图片,无事件绑定并启用追踪。在海龟绘图中,可以通过 bye() 方法关闭窗口。例如,在绘制图形后,直接关闭当前窗口,代码如下:
turtle.bye()
turtle.exitonclick() # 实现单击鼠标左键时关闭窗口