全网最细海龟 (turtle) 画图讲解 (二):窗口控制

最近博主在 CSDN 上看到许多关于海龟画图的案例,如画圣诞树、五角星等,但是都是直接给出了源码以及一些简单的注释,没有对其详细的说明,会让很多初学者迷糊很久,故这里博主详细地对 turtle 模块中的方法进行详解,让广大博友能够做到自由画图。

海龟绘图是 Python 内置的一个比较有趣的模块,模块名称为 turtle。它最初源于 20世纪60年代 的 Logo 语言,之后成为了 Python 的内置模块。海龟绘图提供了一些简单的绘图方法,可以根据编写的控制指令(代码),让一个 “海龟” 在屏幕上来回移动,而且可以在它爬行的路径上绘制图形。通过海龟绘图,不仅可以在屏幕上绘制图形,还可以看到整个绘制过程。另外,海龟绘图对初学者十分友好,它能够轻松地编写出很多有趣的实例。

1. 窗口控制

海龟绘图窗口就是在运行了导入 turtle 模块并调用了绘图方法的 Python 文件后,打开的窗口。该窗口默认的宽度为屏幕的 50%,高度为屏幕的 75%,背景为白色,位于屏幕的中心位置。在绘图时,我们可以设置它的大小、颜色和初始位置等。另外,也可以设置它的标题、背景颜色、背景图片等。下面分别进行介绍。

1.1 设置窗口的尺寸和初始位置

在海龟绘图中,提供了 setup() 方法设置海龟绘图窗口的尺寸、颜色和初始位置。setup() 方法的语法如下:

def setup(self, width=_CFG["width"], height=_CFG["height"],
              startx=_CFG["leftright"], starty=_CFG["topbottom"]):

参数说明:

  1. width:设置窗口的宽度,可以是表示大小为多少像素的整型数值,也可以是表示屏幕占比的浮点数值,默认为屏幕的 50%。
  2. height:设置窗口的高度,可以是表示大小为多少像素的整型数值,也可以是表示屏幕占比的浮点数值,默认为屏幕的 50%。
  3. startx:设置窗口的 x 轴位置,设置为正值,表示初始位置距离屏幕左边缘多少像素,负值表示距离右边缘,None 表示窗口水平居中。
  4. starty:设置窗口的 y 轴位置,设置为正值,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘,None 表示窗口垂直居中。

例如,设置窗口宽度为 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)

1.2 设置窗口标题

海龟绘图的主窗口默认的标题为 “Python Turtle Graphics”,可以通过 title() 方法为其设置新的标题。title() 方法的语法如下:

def title(self, titlestring):
# titlestring: 用于指定标题内容

例如,将海龟绘图窗口的标题设置为 “绘制第一只海龟”,代码如下:

turtle.title("绘制第一只海龟")

程序运行结果如下图所示:

1.3 设置窗口的背景颜色

海龟绘图的主窗口默认的背景颜色为白色,通过 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)

1.4 设置窗口的背景图片

在海龟绘图中,可以使用 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')

1.5 清空屏幕上的绘图

在海龟绘图中,清空屏幕上绘图主要有 3 个方法,下面分别进行介绍。

  1. reset() 方法:用于复位绘图,即删除屏幕中指定海龟的绘图,并且让该海龟回到原点并设置所有变量为默认值。例如,要删除屏幕上名称为 t_ufo 的海龟的绘图,并让它回到原点,可以使用以下代码:
    t_ufo.reset()
    
  2. clear() 方法用于从屏幕中删除指定海龟的绘图,但不移动海龟。海龟的状态和位置以及其他海龟的绘图不受影响。例如,要删除屏幕上名称为 t_ufo 的海龟的绘图,并让它在原地不动,可以使用以下代码:
    t_ufo.clear()
    
  3. clearscreen() 方法不仅会清空绘图,也会清空背景颜色及图片,并且海龟会回到原点。例如,要删除屏幕上所有海龟的绘图,并让它回到原点,可以使用以下代码:
    turtle.clearscreen()
    
    注意:使用 clearscreen() 方法清空屏幕时,将海龟窗口重置为初始状态,即白色背景,无背景图片,无事件绑定并启用追踪。

1.6 关闭窗口

在海龟绘图中,可以通过 bye() 方法关闭窗口。例如,在绘制图形后,直接关闭当前窗口,代码如下:

turtle.bye()
turtle.exitonclick()  # 实现单击鼠标左键时关闭窗口

猜你喜欢

转载自blog.csdn.net/xw1680/article/details/111936721