addRoute
此功能仅打印一次,但是我想在按住UP按钮的同时向上打印。
答案 0 :(得分:1)
您需要在on_key_press
之外进行此检查。
因为该函数是仅在触发按键DOWN事件时才调用的单次函数。而且该触发器仅在操作系统中执行一次。
因此,您需要保存一个DOWN
状态(on_key_press
),并将按下的键保存在一个变量中,该变量位于(以下简称为{ {1}})。
随后,您还需要处理任何self.keys
事件,在我的以下示例中,这些事件是在RELEASE
中完成的。
这是可以将它们绑在一起的方式:
on_key_release
答案 1 :(得分:0)
似乎 pyglet 为这个用例引入了一个事件处理程序:https://pyglet.readthedocs.io/en/latest/programming_guide/keyboard.html#remembering-key-state。文档中的代码示例:
from pyglet.window import key
window = pyglet.window.Window()
keys = key.KeyStateHandler()
window.push_handlers(keys)
# Check if the spacebar is currently pressed:
if keys[key.SPACE]:
pass
如果您想从 pyglet.window.Window
继承子类,这将是一种可能的方法:
import pyglet
from pyglet.window import key
class MyWindow(pyglet.window.Window):
def __init__(self):
super(MyWindow, self).__init__()
self.key_handler = key.KeyStateHandler()
self.push_handlers(self.key_handler)
def on_draw(self):
self.clear()
def update(self, _):
if self.key_handler[key.UP]:
print('UP key pressed')
if __name__ == '__main__':
mygame = MyWindow()
pyglet.clock.schedule_interval(mygame.update, 1/60)
pyglet.app.run()