鼠标按下时打印
我正在使用PyMouse(Event)来检测鼠标按钮是否被按下:
from pymouse import PyMouseEvent
class DetectMouseClick(PyMouseEvent):
def __init__(self):
PyMouseEvent.__init__(self)
def click(self, x, y, button, press):
if button == 1:
if press:
print("click")
else:
self.stop()
O = DetectMouseClick()
O.run()
到目前为止,这个方法是有效的,但我现在想要循环执行print("click")
,直到鼠标不再被按下……我尝试过:
def click(self, x, y, button, press):
if button == 1:
if press:
do = 1
while do == 1:
print("down")
if not press:
do = 0
还有类似的尝试:
while press:
print("click")
有人能帮我吗?谢谢!
1 个回答
3
我觉得正如Oli在评论中提到的,当你按住鼠标按钮时,并不是一直有点击的信号,所以你需要在一个循环里放入print
。如果while
循环在同一个线程里运行,就会阻止鼠标释放时触发点击事件。因此,我能想到的实现你想要的效果的方法,就是在一个单独的线程里执行print("click")
。
我不是Python程序员,但我尝试了一下,结果在我的机器上(Windows 8.1上的Python 2.7)可以运行:
from pymouse import PyMouseEvent
from threading import Thread
class DetectMouseClick(PyMouseEvent):
def __init__(self):
PyMouseEvent.__init__(self)
def print_message(self):
while self.do == 1:
print("click")
def click(self, x, y, button, press):
if button == 1:
if press:
print("click")
self.do = 1
self.thread = Thread(target = self.print_message)
self.thread.start()
else:
self.do = 0
print("end")
else:
self.do = 0
self.stop()
O = DetectMouseClick()
O.run()