下面的代码创建了一个分形树。我希望尽可能快地绘制它--我不希望出现任何动画,否则绘制时间会很长。在python的早期版本中,这是通过turtle.speed(0)实现的,如下所示。这在python 3.4中不起作用
import turtle
import random
red = 125
green = 70
blue = 38
pen = 10
def tree(branchLen, t, red, green, blue, pen):
if branchLen > 3:
pen = pen*0.8
t.pensize(pen)
red = red - 15
green = green + 8
if branchLen > 5:
angle = random.randrange(10, 70)
angleTwo = 0.50*angle
sub = (0.8*(random.randrange(1,24)))
t.forward(branchLen)
t.right(angleTwo)
tree(branchLen-sub,t, red, green, blue, pen)
t.left(angle)
tree(branchLen-sub, t, red, green, blue, pen)
t.right(angleTwo)
t.backward(branchLen)
def main():
t = turtle.Turtle()
t.hideturtle()
t.speed(0)
myWin = turtle.Screen()
t.left(90)
t.up()
t.backward(170)
t.down()
tree(random.randrange(40,47),t,red,green,blue, pen)
myWin.exitonclick()
main()
在Python 3.4中,速度模块似乎没有做任何事情。无论使用什么数字(0-10),它总是相同的速度,并且不显示错误--这意味着它仍然是动画。
如何在Python 3.4中实现turtle无动画?http://interactivepython.org/runestone/static/pythonds/Recursion/graphical.html这是运行Python 2代码的好地方,只需用我的代码替换其中一个windows代码。
3条答案
按热度按时间z0qdvdin1#
我认为使用
turtle.tracer(False)
会很有用,因为它忽略了动画。gj3fmq9x2#
首先,我建议使用
speed('fastest')
而不是speed(0)
,以明确你的意图;其次,在考虑tracer(False)
之前,首先确保你的代码是最优的;最后,当你完成绘图时,总是使用tracer(True)
,因为如果不重新打开跟踪,一些操作将不会按预期的方式运行(例如,代码末尾的hideturtle()
)。至于我的第二个建议,如果遵循逻辑,
if branchLen > 3:
和if branchLen > 5:
的组合没有什么真实的的区别,所以只需使用if branchLen > 5:
。您传递颜色并操纵它们,但从未实际使用它们--如果您想要最佳速度,则丢弃不完整的代码。另外还有其他一些小的优化:一旦您提交了
tracer(False)
,那么speed('fastest')
可能就不再起作用了,所以您可以随意地丢弃它。wtlkbnrh3#
在那里你需要使用first screen = Screen()-获取屏幕模块screen.tracer(0)的访问权限-设置所有动画在你需要在一些步骤中使用screen.update()