在 Turtle 中接受按键的更简单方法?

Easier Way to Accept Key Presses in Turtle?

不必像这样做又长又丑的事情:

    def change_variable():
        global variable
        variable+=1

    def function(var, key):
        global variable
        variable=var
        turtle.listen()
        turtle.onkey(change_variable, key)

有没有办法做到以下几点?我需要任何模块或更新吗?

    turtle.onkey(variable+=1, key)

此外,如果能够执行以下操作,我的事情会变得容易 1000 倍,这可能吗?

    while 1:
        turtle.onkey(break, key)

您可以使用闭包并将丑陋合并到更小的区域:

def function(var, key):
    def change_variable():
        nonlocal var
        var += 1
        print(var)  # just to prove it's incrementing
    turtle.listen()
    turtle.onkey(change_variable, key)

我假设全局 variable 是丑陋的一部分,如果不是并且您需要它,那么只需将其添加回去并将 nonlocal 更改为 global。这会将闭包减少为一个内部函数。

解决方法:

while 1:
        turtle.onkey(break, key)

有点类似:

def outer(key):
    keep_going = True

    def quit_loop():
        nonlocal keep_going
        keep_going = False

    turtle.onkey(quit_loop, key)
    turtle.listen()
    while keep_going:
        turtle.left(70)
        turtle.forward(200)
    print("Done!")

虽然可能不是您所希望的简短、简单的解决方案!