在 Python 中,海龟动画速度非常快
- 2025-01-14 08:50:00
- admin 原创
- 80
问题描述:
我制作了风车,但它移动得太快了。我使用 turtle 库来制作它,并且t2
只用于圆形,t
这是主要工作。我使用tracer
/update
并在里面尝试了一些数字,tracer
但没有任何变化。我怎样才能以正常速度制作该动画?
import turtle
screen = turtle.Screen()
screen.tracer(0)
t2 = turtle.Turtle()
t2.speed(2)
t2.forward(50)
t2.setheading(90)
t2.circle(50)
t = turtle.Turtle()
t.speed(2)
def rectangle() :
t.penup()
t.forward(170)
t.left(90)
t.pendown()
t.forward(5)
t.left(90)
t.forward(120)
t.left(90)
t.forward(10)
t.left(90)
t.forward(120)
t.left(90)
t.forward(5)
def windmill():
for i in range(4):
rectangle()
t.penup()
t.goto(0,0)
t.pendown()
while True:
t.clear()
windmill()
screen.update()
t.left(10)
解决方案 1:
我怎样才能以正常速度制作该动画?
不要在像 turtle 这样的事件驱动的世界中使用while True:
nor !相反,使用 turtle 计时器事件:sleep()
from turtle import Screen, Turtle
def rectangle(t):
t.forward(50)
t.left(90)
t.backward(5)
t.pendown()
for _ in range(2):
t.forward(10)
t.right(90)
t.forward(120)
t.right(90)
t.penup()
def windmill(t):
for _ in range(4):
t.penup()
rectangle(t)
t.goto(0, 0)
screen = Screen()
screen.tracer(0)
turtle = Turtle()
turtle.setheading(90)
def rotate():
turtle.clear()
windmill(turtle)
screen.update()
turtle.left(1)
screen.ontimer(rotate, 40) # adjust speed via second argument
rotate()
screen.mainloop()
您可以调整第二个参数为ontimer()
(以毫秒为单位)来控制动画的运行速度。
解决方案 2:
您可以使用sleep
内置time
模块中的方法:
import turtle
from time import sleep # Imported here
screen = turtle.Screen()
screen.tracer(0)
t2 = turtle.Turtle()
t2.forward(50)
t2.setheading(90)
t2.circle(50)
t = turtle.Turtle()
def rectangle() :
t.penup()
t.forward(170)
t.left(90)
t.pendown()
t.forward(5)
t.left(90)
t.forward(120)
t.left(90)
t.forward(10)
t.left(90)
t.forward(120)
t.left(90)
t.forward(5)
def windmill():
for i in range(4):
rectangle()
t.penup()
t.goto(0,0)
t.pendown()
while True:
sleep(0.05) # Used here
t.clear()
windmill()
screen.update()
t.left(10)
更平滑的方法是减少left
循环每次迭代的量while
:
import turtle
screen = turtle.Screen()
screen.tracer(0)
t2 = turtle.Turtle()
t2.forward(50)
t2.setheading(90)
t2.circle(50)
t2.speed(2)
t = turtle.Turtle()
t.speed(2)
def rectangle() :
t.penup()
t.forward(170)
t.left(90)
t.pendown()
t.forward(5)
t.left(90)
t.forward(120)
t.left(90)
t.forward(10)
t.left(90)
t.forward(120)
t.left(90)
t.forward(5)
def windmill():
for i in range(4):
rectangle()
t.penup()
t.goto(0,0)
t.pendown()
while True:
t.clear()
windmill()
screen.update()
t.left(0.2) # Reduced here!
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD