设置画笔样式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

在窗口中,坐标原点(0,0)的位置默认有一个指向x轴正方向的箭头(或小乌龟),这就相当于我们的画笔。在海龟绘图中,通过画笔可以控制线条的粗细、颜色、运动的速度以及是否显示光标等样式。下面分别进行介绍。

画笔初始形状

在海龟绘图中,默认的画笔形状为箭头,可以通过shape()方法修改为其他样式。shape()方法的语

法如下:

turtle.shape(name=None)

其中,name参数为可选参数,用于指定形状名,如没有指定形状名,则返回当前的形状名。常用的形状名有arrow(向右的等腰三角形)、turtle(海龟)、circle(实心圆)、square(实心正方形)、triangle(向右的正三角形)或classic(箭头)等6种,如图15.10所示。

图15.10  画笔的6种形状

注意:画笔的样式设置后,如果不改变为其他状态,那么会一直有效。

例如,先获取当前的画笔形状,然后将画笔形状修改为实心圆,再获取画笔的形状,代码如下:

from turtle import * # 导入turtle的全部定义

print('修改前:',turtle.shape()) # 获取当前的画笔形状

turtle.shape(name = 'circle') # 设置当前的画笔形状为实心圆

print('修改后:',turtle.shape()) # 获取修改后的画笔形状

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

运行程序,将显示如图15.11所示的效果。

图15.11  改变并获取画笔的形状

在海龟绘图中,一个画笔形状会跟随海龟的光标移动。如果想要在海龟移动过的某个位置留下一个海龟形状,可以使用stamp()方法在当前光标处印制一个印章,该印章不会跟随海龟光标移动。例如,想要在当前光标位置印制一枚印章,可以使用下面的代码:

t = turtle.Pen()

stampid = t.stamp()

设置画笔颜色

在海龟绘图中,画笔的默认颜色为黑色,可以使用pencolor()或者color()方法修改画笔的颜色。下面分别进行介绍。

v pencolor()方法:用于修改画笔的颜色,同时画笔形状会添加一圈所指定颜色的描述,但是内部还是默认的黑色。pencolor()方法的语法如下:

turtle.pencolor(*args)

args参数为可变参数,可以是一个颜色字符串(可以使用英文颜色或者十六进制颜色值,常用的颜色字符串如表15.1所示),也可以是三个取值范围在0~cmode之间的数值(如1.0,0.5,0.5,分别代表r,g,b 的值),还可以是一个取值范围相同的包括3个数值元素(取值范围在0~cmode)的元组(如(1.0,0.5,0.5),分别代表r,g,b的值)。

说明:关于颜色的具体取值请参见15.2.3 小节中的bgcolor() 方法。

例如,使用pencolor()方法设置画笔颜色为红色,并且让海龟向前移动100像素,可以使用下面的代码:

import turtle # 导入海龟绘图模块

turtle.pencolor('red')

turtle.forward(100)

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

或者

import turtle # 导入海龟绘图模块

turtle.pencolor(1,0,0)

turtle.forward(100)

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

再或者

import turtle # 导入海龟绘图模块

turtle.colormode(255) # 设置颜色模式

turtle.pencolor(255,0,0)

turtle.forward(100)

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

运行上面3段代码中的任何一段,都将显示如图15.12所示的结果。

图15.12  使用pencolor()方法设置画笔的颜色

l   color()方法:用于获取或修改画笔的颜色,整个画笔的形状均为所设置的颜色。color()方法的语法如下:

turtle.color(*args)

args参数值可以设置为与pencolor()方法的完全相同,这里将不再赘述。也可以设置两种颜色,分别用于指定轮廓颜色和填充颜色。例如,“turtle.color('red','yellow')”表示轮廓颜色为红色,填充颜色为黄色。

说明:关于填充的设置可以参见第15.4.5 小节。

例如,使用color()方法设置画笔颜色为红色,并且让海龟向前移动100像素,可以使用下面的代码:

import turtle # 导入海龟绘图模块

turtle.color('red')

turtle.forward(100)

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

程序运行结果如图15.13所示。对比图15.12与图15.13可以看出pencolor()方法与color()方法的区别。

图15.13  使用color()方法设置画笔的颜色

落笔与抬笔

本小节我们先来画两条不同颜色的平行线。要实现该功能需要进行以下几步的操作:

设置画笔颜色 → 绘制第一条直线 → 向左旋转90度 → 移动一段距离 → 再向左旋转90度 → 设置画笔颜色 → 绘制第二条直线。

根据以上分析编写的代码如下:

import turtle # 导入海龟绘图模块

turtle.color('red')

turtle.forward(200) # 画一条红色的线

turtle.left(90)

turtle.forward(30) # 画一条红色的线

turtle.left(90)

turtle.color('green')

turtle.forward(200) # 画一条绿色的线

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

运行上面的代码,将显示如图15.14所示的结果。

图15.14  绘制两条不同颜色的平行线(未完成)

从图15.14可以看出,并没实现想要的绘制两条平行线。这是因为在移动海龟时,默认会留下“足迹”。如果有时只想实现移动,而不想画线,那么需要设置画笔的抬起(简称抬笔)和落下(简称落笔)的状态。当抬笔时不画线,落笔时再画线。

l  实现抬笔功能时,可以使用下面3种方法:

Ø  turtle.penup()

Ø  turtle.pu()

Ø  turtle.up()

说明:这三种方法的功能是一样的,使用哪种方法都可以。

l  实现落笔功能时,可以使用下面3种方法:

Ø  turtle.pendown()

Ø  turtle.pd()

Ø  turtle.down()

说明:这三种方法的功能是一样的,使用哪种方法都可以。

实例15.2  绘制两条不同颜色的平行线

首先导入海龟绘图模块,并且画一条红线,然后逆时针旋转90度,并且设置抬笔,再移动30像素,并且逆时针旋转90度,最后设置落笔,并且画一条绿色的线,代码如下:

import turtle # 导入海龟绘图模块

turtle.color('red')

turtle.forward(200) # 画一条红色的线

turtle.left(90) # 逆时针旋转90度

turtle.penup() # 抬笔

turtle.forward(30) # 向上移动30像素

turtle.left(90)

turtle.pendown() # 落笔

turtle.color('green')

turtle.forward(200) # 画一条绿色的线

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

运行程序,效果如图15.15所示。

图15.15 绘制两条不同颜色的平行线( 完成)

设置线条粗细

在海龟绘图中,默认的线条粗细为1像素。如果想改变线条粗细,可以通过以下两个方法中的任

意一个实现:

turtle.pensize(width=None)

或者

turtle.width(width=None)

其中,width为可选参数,如果不指定,则获取当前画笔的粗细,否则使用设置的值改变画笔的粗细。

例如,修改【实例15.2】,将第二条绿色的线的粗细设置为5像素。修改后的代码如下:

import turtle # 导入海龟绘图模块

turtle.color('red')

turtle.forward(200) # 画一条红色的线

turtle.left(90) # 逆时针旋转90度

turtle.penup() # 抬笔

turtle.forward(30) # 向上移动30像素

turtle.left(90)

turtle.pendown() # 落笔

turtle.width(5) # 设置线的粗细为5像素

turtle.color('green')

turtle.forward(200) # 画一条绿色的线

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

说明:第09 行代码为在【实例15.2】的基础上新增加的代码。

修改后的程序运行效果如图15.16 所示。

图 15.16 修改线的粗细

从图15.16中可以看出,设置线的粗细后,海龟的光标还是原来的大小,如果想要改变其大小,可以在设置线的粗细之前使用代码“turtle.resizemode('auto')”设置改变模式为自动。修改后的代码运行效果如图15.17所示。

图1 5.17  改变海龟的光标大小

隐藏与显示海龟光标

在默认情况下采用海龟绘图时,会显示海龟光标。例如,已经通过shape()方法将当前的光标样式设置为turtle(海龟)。那么在绘图时,可以看见屏幕上有一只缓慢爬行的小海龟。对于此种情况,在绘制复杂图形时,势必会影响速度。因此,海龟绘图提供了以下隐藏或显示海龟光标的方法。

l  showturtle()或者st()方法:用于显示海龟光标。这两种方法任选其一即可。

l  hideturtle()或者ht()方法:用于隐藏海龟光标。这两种方法任选其一即可。

l  isvisible()方法:用于判断海龟光标是否可见。

例如,在默认情况下,让海龟向前爬行100像素,再隐藏海龟光标,并且让海龟向下爬行100像素,代码如下:

import turtle # 导入海龟绘图模块

turtle.shape('turtle') # 改变海龟光标的形状为海龟

turtle.forward(100) # 向前爬行100像素

turtle.right(90) # 顺时针旋转90度

turtle.hideturtle() # 隐藏海龟光标

turtle.forward(100) # 向下爬行100像素

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

运行程序,可以看到在绘制水平直线时,有海龟在爬行,但是在绘制向下的直线时,就没有海龟在爬行了,效果如图15.18所示。

图 1 5.18  显示与隐藏海龟光标的效果

设置画笔的速度

在海龟绘图时,默认是有绘制的动画效果的,并且速度的快慢可以通过speed()方法进行调整。

speed()方法的语法如下:

turtle.speed(speed=None)

其中,参数speed为可选参数,如果不指定,则获取当前的画笔速度;如果指定,需要将值设置为0~10之间的整数或速度字符串。速度字符串有fastest(最快)、fast(快)、normal(正常)、slow(慢)、 slowest(最慢)。当设置速度值时,0表示最快,1表示最慢,然后逐渐加快。

注意:speed = 0表示没有动画效果。forward()/back() 方法将使海龟向前/ 向后跳跃,同样的left()/right()方法将使海龟立即改变朝向。

例如,将画笔的速度设置为最快,代码如下:

turtle.speed(0) # 设置画笔的速度,0为最快

将画笔的速度设置为正常,代码如下:

turtle.speed(6) # 设置画笔的速度,6为正常

 动手试一试3

任务一:绘制彩虹线条

本任务要求编写一段Python代码,使用海龟绘图绘制一条彩虹色的线条,如图15.19所示。

图15.19  绘制彩虹线条

任务二:绘制随机颜色、粗细、瓣数的雪花

本任务要求编写一段Python代码,使用海龟绘图绘制随机颜色、粗细(1~3像素)、瓣数(6~10个)的雪花

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值