gpt4 book ai didi

Python Turtle mainloop() 用法

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:06 25 4
gpt4 key购买 nike

我有来自 online tutorial 的以下代码通过制作一个在单击鼠标时改变状态的 parking 灯来学习基于事件的编程。这是我的全部代码:

import turtle

turtle.setup(400,500)
wn = turtle.Screen()
wn.title("Tess becomes a traffic light!")
wn.bgcolor("lightgreen")
tess = turtle.Turtle()

def draw_housing():
tess.pensize(3)
tess.color("black","darkgrey")
tess.begin_fill()
tess.forward(80)
tess.left(90)
tess.forward(200)
tess.circle(40, 180)
tess.forward(200)
tess.left(90)
tess.end_fill()

draw_housing()

tess.penup()
tess.forward(40)
tess.left(90)
tess.forward(40)
tess.shape("circle")
tess.shapesize(3)
tess.fillcolor("green")

state_num = 0

def nextFSMstate():
global state_num
if state_num == 0:
tess.forward(70)
tess.fillcolor("orange")
state_num = 1
elif state_num == 1:
tess.forward(70)
tess.fillcolor("red")
state_num = 2
else:
tess.back(140)
tess.fillcolor("green")
state_num = 0

wn.onkey(nextFSMstate, "space")
wn.listen()
turtle.mainloop()
# example says wn.mainloop() but I get error. This works though

在教程中,他们使用:

wn.mainloop()

但是我得到了错误:

File "stopLights.py", line 51, in <module>
wn.mainloop()
AttributeError: '_Screen' object has no attribute 'mainloop'

并且必须使用

turtle.mainloop()

为什么不同?我在 Ubuntu 中使用 Python 2.7;这个例子在 PyScripter 中。提前致谢。

最佳答案

这似乎是教程中的一个错误。

在第4行,他们定义了wn = turtle.Screen(),也就是说后面调用wn.mainloop()等同于调用 turtle.Screen().mainloop().

这没有任何意义;由于错误消息指出 turtle.Screen() 没有 .mainloop() 方法。 ,但是基础 turtle 对象的 .mainloop() 方法,这就是调用它的原因。

关于Python Turtle mainloop() 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38252920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com