700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Python】监测鼠标各种事件(左键/中键/右键是否点下)

【Python】监测鼠标各种事件(左键/中键/右键是否点下)

时间:2021-08-17 03:02:18

相关推荐

【Python】监测鼠标各种事件(左键/中键/右键是否点下)

目录

0. 前言1. 安装PyHook32. 检测鼠标左键/中键/右键是否按下3. PyHook3详细讲解

0. 前言

最近在写一个脚本,需要用到监测用户是否点击鼠标中键,然后触发相应的功能。这本身就是个很简单的功能,看别人有很多解决方案:有用pygame的有用tkinter的,总觉得不太合适:我就实现个这么简单的功能,有没有更专业的专门处理这一类问题的库呢?于是找到了PyHook3.

PyHook作用是监测键盘和鼠标事件,底层还是使用windows API实现,这给人的感觉就很舒服了。注意我们要安装的是PyHook3而不是pyHook,究其原因是pyHook在Python3上运行会有奇怪的BUG(亲测)

1. 安装PyHook3

我的环境是Python3.7, win10

安装总共分三步:

(1)安装python对应版本的pyhook3

(2)安装swig

(3)安装visual c++ 14.0

(4)pip直接安装:pip install PyHook3

(如果跳过前两步直接pip安装会出现两片红色的报错)

第(1)步:

参考Python3.7环境安装PyHook3的第一步。

具体步骤为:下载/project/PyHook3/#files这个网站的

解压缩。

利用CMD窗口定位到解压缩的文件夹执行setup.py。执行命令为python setup.py build。

(2)(3)操作步骤这篇博客说得很详细了:

pyhook3安装教程及与之相关的一些问题的解决方法

2. 检测鼠标左键/中键/右键是否按下

先上代码,注释中有讲解

import PyHook3 as pyHookimport pythoncom # 没这个库的直接pip install pywin32安装i,j,k = 0,0,0def funcLeft(event):if (event.MessageName != "mouse move"): # 因为鼠标一动就会有很多mouse move,所以把这个过滤下global ii = i + 1print('第{:3d}次:按下鼠标左键我就会出现,嘻嘻'.format(i))return Truedef funcMiddle(event):if (event.MessageName != "mouse move"): # 因为鼠标一动就会有很多mouse move,所以把这个过滤下global jj = j + 1print('第{:3d}次:按下鼠标中键我就会出现,嘻嘻'.format(j))return Truedef funcRight(event):if (event.MessageName != "mouse move"): # 因为鼠标一动就会有很多mouse move,所以把这个过滤下global kk = k + 1print('第{:3d}次:按下鼠标右键我就会出现,嘻嘻'.format(k))return Truedef main():# 创建管理器hm = pyHook.HookManager()# 监听鼠标# hm.MouseLeftDown 是将“鼠标左键按下”这一事件和func这个函数绑定,即每次鼠标左键按下都会执行func# 如果希望监测鼠标中键按下则:hm.MouseMiddleDown,鼠标右键按下则:hm.MouseRightDownhm.MouseLeftDown = funcLeft # 监测鼠标左键是否按下hm.MouseMiddleDown = funcMiddle # 监测鼠标中键是否按下hm.MouseRightDown = funcRight # 监测鼠标右键是否按下hm.HookMouse()# 循环监听pythoncom.PumpMessages()if __name__ == "__main__":main()

运行结果:

3. PyHook3详细讲解

这个库的功能本身就很简单,这篇博客讲得超级好:

PyHook3简明教程

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。