前言:
书接上篇,我们继续来了解Python内置库 turtle功能库。在前面的文章中,我们初步的了解了一下 turtle库,画布和画笔相关的函数,那么我们继续来深入了解一下吧。
详情见:
Python学习日记之学习turtle库(上 篇)-CSDN博客https://blog.csdn.net/Isaiah_Cohen/article/details/136581082?spm=1001.2014.3001.5501
一、画笔函数的控制指令
在Python内置库 turtle是一个专门用于绘画的功能库,其中有一类专门用于绘画的指令函数。
表1 - 1 认识控制指令及其功能
指令 | 别称 | 说明 |
turtle.penup() | turtle.up() turtle.pu() | 笔从屏幕上拉起来,它在移动到另一个位置或方向时不提供任何绘图 |
turtle.pendown() | turtle.pd() turtle.down() | 将拉起的画笔落回画布 |
turtle.isdown() | 检查画笔是否已经落下 | |
turtle.fillcolor('color') | 该方法用于返回或设置填充色。如果turtleshape是一个多边形,那么该多边形的内部将用新设置的填充色绘制 | |
turtle.color('pencolor', 'fillcolor') | 设置画笔颜色和填充颜色。如果只有一个颜色则画笔颜色和填充颜色相同。如果是两种颜色,则前者是画笔颜色,后者是填充颜色 | |
turtle.filling() | 检查图形是否为填充状态 | |
turtle.begin_fill() | 开始填充,这个方法用于在绘制一个要填充的形状之前调用,它不接受任何参数。 | |
turtle.end_fill() | 结束填充,该方法用于填充调用begin_fill()后绘制的形状 | |
turtle.hideturtle() | turtle.ht() | 这个方法是用来使Turtle隐身的。当你正在进行复杂的绘图时,这样做是个好主意,因为隐藏Turtle会明显加快绘图速度。这个方法不需要任何参数 |
turtle.showturtle() | turtle.st() | 该方法用于将隐藏起来的turtle使其可见。它不需要任何参数。 |
turtle.clear() | 这个功能是用来删除屏幕上的Turtle图画。Turtle的不移动状态和位置以及其他Turtle的绘图不受影响。它不需要任何参数。 | |
turtle.reset() | 这个函数用来删除turtle的图画并恢复其默认值。它不需要任何参数。 | |
turtle.undo() | 这个函数用来撤消(重复)最后一个turtle动作。可用的撤销动作的数量由撤销缓冲区的大小决定。它不需要任何参数。 | |
turtle.isvisible() | 检查画笔是否可见 | |
turtle.shape() | 该函数用于将Turtle形状设置为具有给定名称的形状,如果没有给定名称,则返回当前形状的名称。 | |
turtle.stamp() | 该方法用于在画布上印制一个turtle形的副本,相当于印章,并返回其ID。它不需要任何参数。不管turtle的形状是什么,它都会在这一点上被打印出来,然后继续下一个指令。 | |
turtle.clearstamp() | 清除当前印章 | |
turtle.clearstamps() | 清除全部印章 | |
turtle.write(s [,font=('font_name',font_size,'font_type')]) | 该函数用于在当前 turtle 位置书写文本,s为文本内容,字体font是可选项,其名称,大小和类型等参数也是可选项 |
二、关于turtle库绘图练习
在练习之前我们先明确一个小知识,在使用Python turtle画图时,画完图形窗口一下子退出消失怎么办,如何能够停留在画完的窗口呢?
退出窗口停滞的解决方法
程序退出画图界面的原因,本质上来说就是程序执行完成,程序结束窗口也随着程序一并结束。其实是解决的方法很简单,只要我们能够想办法让程序在画完图片后,不退出就好了。
turtle提供了几个可以让窗口一直保持着的方法:
- 第一种方法:在程序的最后面加上:turtle.exitonclick(),让程序等待用户点击界面后才能够退出
- 第二种方法:在程序的最后面加上:turtle.mainloop(),该语句必须放到最后一句,该句子后面的所有代码都无法执行
- 第三种方法:在程序的最后面加上:turtle.done(),该语句的功能和mainloop()差不多。
绘制一个彩色正方形
代码
import turtle
from turtle import * # turtle库的调用
pensize(2) # 选择画笔大小
pencolor("red") # 选择画笔颜色
color = ["green","red","pink","blue"] # 对颜色进行一一枚举
for i in range(200): # 进行4次循环turtle.forward(i*2) # 向前前进100个像素pencolor(color[i%4])# 设置画笔颜色turtle.right(90)# 由前进方向,向右转90°
turtle.done() # 窗口停滞
运行结果
六芒星
代码:
from turtle import *
def triangle():pensize(2)pencolor('black')for i in range(3):fd(60)right(120)def main():colors=['green','red','yellow','pink','purple','orange']speed(7)for i in range(6):begin_fill()fillcolor(colors[i])triangle()fd(60) #以坐标系为基准,左转60°left(60)end_fill()#填充中心颜色fillcolor("blue")begin_fill()for i in range(6):fd(60)left(60)end_fill()ht()#隐藏画笔
main()
done()
运行结果