我正在使用 PyAutoGUI 库。如何知道鼠标左键是否被按下?
这就是我想要做的:
if(leftmousebuttonpressed):
print("left")
else:
print("nothing")
(我是 PyAutoGUI 的作者。)我可以确认当前 PyAutoGUI 无法读取/记录点击或击键。这些功能在路线图上,但目前没有任何资源或时间表专门用于它们。
受原始文档启发的代码的简单版本:
from pynput import mouse
def on_click(x, y, button, pressed):
if button == mouse.Button.left:
print('{} at {}'.format('Pressed Left Click' if pressed else 'Released Left Click', (x, y)))
return False # Returning False if you need to stop the program when Left clicked.
else:
print('{} at {}'.format('Pressed Right Click' if pressed else 'Released Right Click', (x, y)))
listener = mouse.Listener(on_click=on_click)
listener.start()
listener.join()
就像上面评论中提到的Al Sweigart 爵士一样,我寻找了完美的pynput模块。请参阅以下位置的文档和PyPi说明:
使用 pip 安装库:pip install pynput
请参阅原始文档中监视鼠标标题 下的代码。https://pynput.readthedocs.io/en/latest/mouse.html#monitoring-the-mouse
我认为您不能使用 PyAutoGui 来监听鼠标点击。
而是尝试 Pyhook(来自他们的源页面):
import pythoncom, pyHook
def OnMouseEvent(event):
# called when mouse events are received
print 'MessageName:',event.MessageName
print 'Message:',event.Message
print 'Time:',event.Time
print 'Window:',event.Window
print 'WindowName:',event.WindowName
print 'Position:',event.Position
print 'Wheel:',event.Wheel
print 'Injected:',event.Injected
print '---'
# return True to pass the event to other handlers
return True
# create a hook manager
hm = pyHook.HookManager()
# watch for all mouse events
hm.MouseAll = OnMouseEvent
# set the hook
hm.HookMouse()
# wait forever
pythoncom.PumpMessages()
我相信你可以这样做:
import pyHook, pythoncom
def left_down():
print("left down")
def right_down():
print("right down")
hm = pyHook.HookManager()
hm.SubscribeMouseLeftDown(left_down)
hm.SubscribeMouseRightDown(right_down)
hm.HookMouse()
pythoncom.PumpMessages()
hm.UnhookMouse()
他们也做键盘事件,去看看他们的 api。
编辑:这是他们的迷你教程:https ://sourceforge.net/p/pyhook/wiki/PyHook_Tutorial/
PyHook 也仅适用于 Windows(感谢 John Doe 指出)