python海龟绘图之定时器

可以通过ontimer()函数在海龟绘图时设置定时器,在指定一段时间后,再发生某些指定的动作。

1 定时器的设置

设置定时器之前,需要定义一个无参数的函数,作为指定的动作,代码如图1所示。

图1 定义定时器指定动作的代码

注意1 作为定时器指定的动作函数,一定是要无参数的函数。

之后通过ontimer()函数指定定时器的时间和动作,代码如图2所示。

图2 指定定时器的时间和动作的代码

以上代码的作用是,设置一个定时器,当1000毫秒之后,调用move()函数完成海龟画圆的动作。

2 定时器的连续设置

“1 定时器的设置”中设置的定时器只能执行一次,要实现海龟的连续画圆,则需要在定时器指定动作的函数中再次设置定时器,这样就可以嵌套地设置无限多个定时器,代码如图3所示。

图3 嵌套设置定时器的代码

在定时器指定动作函数move()中,绘制半径为r的圆,每绘制一次,圆的半径增加20。在函数的最后,第8行代码中再次设置定时器。这样就可以嵌套地设置无限多个定时器了。代码运行效果如图4所示。

图4 代码运行效果

3 定时器的控制

可以通过ontimer()函数嵌套设置无限多个定时器,但是没有取消定时器的函数。因此,需要一个变量来控制定时器的创建和取消,代码如图5所示。

图5 带控制变量的定时器动作函数

其中,第4行代码定义的running用来控制定时器的设置和取消,该变量的初始值是True。接下来定义鼠标左键点击的响应函数stop(),当点击了鼠标左键后,取消定时器,此时海龟停止画圆,代码如图6所示。

图6 鼠标左键点击的响应函数

当点击了鼠标左键后,running的值变为False,此时图5所示的定时器动作函数将无法嵌套地设置定时器,相当于取消了定时器。

接下来添加鼠标右键点击的响应函数,当点击了鼠标右键后,再次创建定时器,使得海龟继续画圆,代码如图7所示。

图7 鼠标右键点击的响应函数

当点击了鼠标右键后,running的值标为True,海龟画圆的半径恢复到初始值50,并且再次创建定时器,开始调用move()函数画圆。

最后将stop()函数与start()函数与鼠标左右按键的时间关联起来,如图8所示。

图8 响应函数与鼠标按键事件关联的代码

代码运行的效果如图9所示。

图9 代码运行效果

注意以上代码要调用mainloop()done()函数保持程序一直运行。

4 小结

可以通过ontimer()函数设置定时器,但是此时定时器只能设置一个。在定时器动作函数中嵌套地创建定时器,可以实现无限多定时器的设置。在嵌套设置定时器时,需要通过一个变量来控制定时器的设置和取消。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值