繁体   English   中英

接受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!")

尽管可能不是您所希望的短而简单的解决方案!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM