【问题标题】:Python turtle: trigger function on any key pressedPython乌龟:按下任何键时触发功能
【发布时间】:2021-07-06 13:19:43
【问题描述】:

如何添加使用turtle 按下的随机键(这意味着我不想要这个:scr.onkey(fun,'r')?

我试过这个...

import turtle as system

scr=system.Screen()

def p():
     print('button pressed')

scr.onkey(p,any)

...但这不起作用。我怎样才能解决这个问题?感谢您的帮助!

【问题讨论】:

  • 只提供“无”,或完全省略参数。
  • @TimRoberts, onkey() 如果您提供 None 或省略参数,将产生错误。请参阅@rdas 关于onkeypress() 的回答,或我的回答以获得解释。
  • 我试过这个...

标签: python python-turtle


【解决方案1】:

这是一个完整的示例 -- 请注意,您也没有在代码片段中显示 listen() 方法,这也是必需的:

from turtle import Screen, Turtle

def handler():
    turtle.write("Button pressed!", align='center', font=('Arial', 18, 'normal'))

screen = Screen()

turtle = Turtle()
turtle.hideturtle()

screen.onkeypress(handler)

screen.listen()
screen.exitonclick()

故事是这样的:onkey() 方法也称为 onkeyrelease(),既不接受 None 作为字符,也不接受缺少字符参数。 @TimRoberts 评论不起作用。正如@rdas 所指出的 (+1),请使用 onkeypress() 方法,该方法确实接受 None 字符,或者只是缺少的参数,并且可以执行您想要的操作。

但有一个问题:您的事件处理程序将在任何键上触发,但您无法在 Turtle 中确定 哪个 键。如果您需要该功能,请查看this answer,它提供了一个替换onkeypress() 方法,在未指定字符的情况下,该方法将键入的字符传递给您的事件处理程序。 (即None 案例。)

【讨论】:

    【解决方案2】:

    您可以改用onkeypress

    scr.onkeypress(p)
    

    key 参数,如果没有给出,将触发任何按键的功能。

    如果给定 key,则将 fun 绑定到 key 的 key-press 事件,如果没有给定 key,则绑定到任何 key-press-event。

    【讨论】:

      最近更新 更多