【问题标题】:AttributeError: '_Screen' object has no attribute 'mainloop'AttributeError: '_Screen' 对象没有属性 'mainloop'
【发布时间】:2015-08-30 04:08:04
【问题描述】:

我正在设计一个简单的 Python 程序,它使用 Turtle 图形模块通过箭头键在屏幕上绘制线条。

import turtle

turtle.setup(400,500)                # Determine the window size
wn = turtle.Screen()                 # Get a reference to the window
wn.title("Handling keypresses!")     # Change the window title
wn.bgcolor("lightgreen")             # Set the background color
tess = turtle.Turtle()               # Create our favorite turtle

# The next four functions are our "event handlers".
def h1():
   tess.forward(30)

def h2():
   tess.left(45)

def h3():
   tess.right(45)

def h4():
    wn.bye()                        # Close down the turtle window

# These lines "wire up" keypresses to the handlers we've defined.
wn.onkey(h1, "Up")
wn.onkey(h2, "Left")
wn.onkey(h3, "Right")
wn.onkey(h4, "q")

# Now we need to tell the window to start listening for events,
# If any of the keys that we're monitoring is pressed, its
# handler will be called.
wn.listen()
wn.mainloop()

当我尝试执行它时,返回以下错误。

Traceback (most recent call last):
  File "C:\Users\Noah Huber-Feely\Desktop\PEN_Programming\Python\etchy_sketch1.py", line 32, in <module>
    wn.mainloop()
AttributeError: '_Screen' object has no attribute 'mainloop'

我使用的是 Python 2.7,之前使用 Turtle 图形没有任何问题。直到现在我才开始使用按键输入,才出现这个问题。

在网上搜索,我只找到了与我目前遇到的不同问题和模块的文章。

如果您需要更多信息,请告诉我。谢谢!

【问题讨论】:

    标签: python python-2.7 graphics turtle-graphics


    【解决方案1】:

    它仍然是turtle.mainloop(),而不是wn.mainloop()

    我怀疑这是因为您可以制作多个屏幕,因此仍然让turtle 模块管理所有屏幕而不是试图让多个主循环一起工作是有意义的。

    【讨论】:

    • wn.mainloop() 仅在 Python 3 中有效。在 Python 2 中,mainloopTK.mainloop 的(全局模块)同义词。在 Python 3 中,mainloopTurtleScreenBase 的一个方法,它调用 TK.mainloop。当像这样独立使用 turtle 时(即不嵌入到 Tk 中),只有一个屏幕,没有办法制作其他屏幕。
    猜你喜欢
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2021-04-19
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    相关资源
    最近更新 更多