如何在Python Turtle中同时运行两个函数实现两只海龟反向移动
问题原因
Turtle 是单线程图形库,默认按顺序执行代码,单独先后调用one()和two()只能看到两只海龟先后移动,无法实现同时运动的视觉效果。
可行解决方案
最稳定的实现方式是用ontimer定时器拆分移动步长,让两只海龟每次各移动一小段距离,利用人眼视觉暂留效果实现同步反向远离的效果,参考代码如下:
from turtle import * a = Screen() b = Turtle() c = Turtle() # 可自定义参数:每次移动步长、总移动次数 step_length = 2 move_count = 50 current_count = 0 def sync_move(): global current_count if current_count < move_count: # 每次调用两只海龟各移动一个步长,方向相反 b.forward(step_length) c.forward(-step_length) current_count += 1 # 间隔16ms再次调度,约60帧/秒,移动流畅无卡顿 a.ontimer(sync_move, 16) # 启动移动逻辑,如需按键触发,可绑定到screen的onkey方法 sync_move() # 保持窗口不关闭 a.mainloop()
补充说明
- 如需调整移动速度,可修改
step_length(步长越大移动越快)或ontimer的间隔时间(间隔越小移动越快) - 如需实现持续移动不停止,删掉步数判断逻辑即可
- 不建议使用多线程实现该需求,Turtle的GUI操作不是线程安全的,容易出现界面崩溃、海龟移动异常等问题
内容的提问来源于stack exchange,提问作者icantcode
相关产品推荐
相关产品推荐

