首页 > 解决方案 > on_key_press() 事件阻塞 on_mouse_press() 和 on_mouse_motion() 事件 1 秒

问题描述

所以我正在用 Pyglet 开发一个小游戏,我遇到了这种奇怪的行为,我不知道如何解决。这似乎是一个 Pyglet 错误,但奇怪的是我找不到其他用户报告这个问题。

问题是按下一个键后,如果我在按下键后右击左键,该事件将被忽略。这是可重复的,总是。有趣的是,如果我右键单击,事件总是运行良好。只有左键是问题。按下任何键后,on_mouse_motion() 也会被阻止 1 秒。如果我不按任何键盘键,所有鼠标事件都可以正常工作。

我已经用 Pyglet 版本 1.3.0、1.4.10 和 1.5.11 对此进行了测试,并且都具有相同的行为。我还在 2 台不同的计算机上对此进行了测试,并且行为是相同的。我还尝试了 Vsync ON 和 OFF 以及 pyglet 窗口独有的鼠标。使用 Windows 10 和 Python 3.7.4-64b。

这是重现问题的简单代码,只需按一个键,然后在 1 秒内左键单击:

import pyglet

window = pyglet.window.Window()

@window.event
def on_key_press(symbol, modifiers):
    print('A key was pressed')

@window.event
def on_mouse_press(x, y, button, modifiers):
    print('Mouse event') 

pyglet.app.run()

编辑:问题是 Synaptics 触摸板,它被配置为在笔记本电脑上打字时禁用触摸板。

标签: pythonpyglet

解决方案


似乎问题在于 Synaptics 触摸板,它被配置为在笔记本电脑上打字时禁用触摸板:

https://superuser.com/questions/399341/touchpad-does-not-respond-when-i-am-holding-key-on-the-keyboard

我将外接鼠标连接到笔记本电脑,问题就消失了。


推荐阅读