我想在玩游戏时收集数据,这样我就可以学习一种算法,以后再玩。 为此,我需要一个键和鼠标记录器,该记录器需要:
我遇到的问题是,一次鼠标点击/滚动和按键注册两次。
有了Javascript,我想您可以通过使用preventDefault()
来阻止这种情况,但我不知道python如何解决这个问题
以下输出行表示单击一次:
time/button/x/y/pressed
(17:52:08.509538): click:Button.left:587:1266:True:
(17:52:08.510471): click:Button.left:587:1266:True:
我宁愿不检查当前和最后一个触发器之间的时间差,除非我没有任何其他选择,但我无法想象这种情况
我已将我的侦听器定义如下:
with keyboard.Listener(on_press=self.on_press) as k_listener, mouse.Listener(on_click=self.on_click, on_scroll=self.on_scroll) as m_listener:
k_listener.join()
m_listener.join()
on_press、on_click和on_scroll方法如下所示:
def on_press(self, key):
print(str(key))
self.log_input(str(key))
def on_click(self, x, y, button, pressed):
if pressed:
print('click:' + str(button) + ':' + str(x) + ':' + str(y) + ':' + str(pressed) + ':')
self.log_input('click:' + str(button) + ':' + str(x) + ':' + str(y) + ':' + str(pressed) + ':')
else:
pass
def on_scroll(self, x, y, dx, dy):
print('scroll:' + str(x) + ':' + str(y) + ':' + str(dx) + ':' + str(dy) + ':')
self.log_input('scroll:' + str(x) + ':' + str(y) + ':' + str(dx) + ':' + str(dy) + ':')
我只想触发这些方法一次,而不是两次
我似乎无法重现您的问题,但它可能是由您的
log_input
引起的。我建议通过一个单独定义的函数记录您的输入,该函数可以附加到列表或文本文件中。以下是仅使用按键事件的简化版本在我自己的程序中使用单独的方法是可行的
相关问题 更多 >
编程相关推荐