【问题标题】:My Python turtle window crashes when using onkey event使用 onkey 事件时,我的 Python 乌龟窗口崩溃
【发布时间】:2017-07-21 10:44:18
【问题描述】:

当我尝试向左移动时,我的 Python 乌龟窗口崩溃了。我在 Python 海龟图形中使用 onkey,当我尝试使用它时,我的窗口完全崩溃了。这是我的代码:

import turtle



wn = turtle.Screen()
wn.bgcolor("green")

crosshair = turtle.Turtle()
crosshair.shape("circle")

draw = turtle.Pen()
draw.color("brown")
draw.ht()

while True:

    def left():
        draw.st()
        draw.penup()
        draw.left(90)
        draw.forward(50)
        draw.pendown()
        draw.forward(100)
        draw.left(90)
        draw.forward(50)
        draw.right(90)
        draw.forward(100)
        draw.right(90)
        draw.forward(100)
        draw.right(90)
        draw.forward(100)
        draw.right(90)
        draw.forward(50)

    turtle.listen()
    turtle.onkey(left, "Left")

【问题讨论】:

    标签: python turtle-graphics


    【解决方案1】:

    您的代码结构不正确。使用 turtle 时不应有无限的 while True: 循环。相反,您应该设置您的事件处理程序,例如onkey(),并使用mainloop() 将控制权交给 Tk 的事件循环。在 Python 方面,您无需在循环内定义 left(),将其移至顶层。这是包含上述更改的返工:

    from turtle import Turtle, Screen
    
    def left():
        draw.st()
    
        draw.penup()
        draw.left(90)
        draw.forward(50)
        draw.pendown()
    
        draw.forward(100)
        draw.left(90)
    
        draw.forward(50)
        draw.right(90)
    
        for _ in range(3):
            draw.forward(100)
            draw.right(90)
    
        draw.forward(50)
    
        draw.ht()
    
    screen = Screen()
    screen.bgcolor("green")
    
    crosshair = Turtle("circle")
    
    draw = Turtle(visible=False)
    draw.color("brown")
    
    screen.onkey(left, "Left")
    screen.listen()
    
    screen.mainloop()
    

    单击窗口使其处于活动状态,然后您可以使用左箭头键调用图形:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      相关资源
      最近更新 更多