IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 【Python】监测鼠标各种事件(左键/中键/右键是否点下) -> 正文阅读

[游戏开发]【Python】监测鼠标各种事件(左键/中键/右键是否点下)

0. 前言

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

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

1. 安装PyHook3

我的环境是Python3.7, win10

安装总共分三步:
(1)安装swig
(2)安装visual c++ 14.0
(3)pip直接安装:pip install PyHook3

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

具体操作步骤这篇博客说得很详细了:
pyhook3安装教程及与之相关的一些问题的解决方法

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

先上代码,注释中有讲解

import PyHook3 as pyHook
import pythoncom  # 没这个库的直接pip install pywin32安装

i,j,k = 0,0,0

def funcLeft(event):
    if (event.MessageName != "mouse move"):  # 因为鼠标一动就会有很多mouse move,所以把这个过滤下
        global i
        i = i + 1
        print('第{:3d}次:按下鼠标左键我就会出现,嘻嘻'.format(i))
    return True

def funcMiddle(event):
    if (event.MessageName != "mouse move"):  # 因为鼠标一动就会有很多mouse move,所以把这个过滤下
        global j
        j = j + 1
        print('第{:3d}次:按下鼠标中键我就会出现,嘻嘻'.format(j))
    return True

def funcRight(event):
    if (event.MessageName != "mouse move"):  # 因为鼠标一动就会有很多mouse move,所以把这个过滤下
        global k
        k = k + 1
        print('第{:3d}次:按下鼠标右键我就会出现,嘻嘻'.format(k))
    return True

def main():
    # 创建管理器
    hm = pyHook.HookManager()
    # 监听鼠标
    # hm.MouseLeftDown 是将“鼠标左键按下”这一事件和func这个函数绑定,即每次鼠标左键按下都会执行func
    # 如果希望监测鼠标中键按下则:hm.MouseMiddleDown,鼠标右键按下则:hm.MouseRightDown
    hm.MouseLeftDown = funcLeft  # 监测鼠标左键是否按下
    hm.MouseMiddleDown = funcMiddle  # 监测鼠标中键是否按下
    hm.MouseRightDown = funcRight  # 监测鼠标右键是否按下
    hm.HookMouse()

    # 循环监听
    pythoncom.PumpMessages()


if __name__ == "__main__":
    main()

运行结果:
在这里插入图片描述

3. PyHook3详细讲解

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

PyHook3简明教程

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:26:52  更:2021-11-25 08:27:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 23:35:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码