如何在Python中监听全局按键或指定应用窗口的鼠标点击
解决方案:监听键盘按键与鼠标点击事件
推荐使用pynput模块,它能同时监听键盘和鼠标输入,API简洁直观,完全匹配你的需求。以下是完整的可运行代码:
1. 先安装依赖
pip install pynput pywin32 # pywin32仅Windows平台需要
2. 完整实现代码
from pynput import keyboard, mouse import time import win32gui # Windows平台专用,获取窗口标题 key_pressed = None clicked_app = None # 键盘按键监听回调 def on_press(key): global key_pressed try: # 记录普通字符按键 key_pressed = key.char except AttributeError: # 记录特殊按键(如Shift、Ctrl等) key_pressed = str(key) # 触发后立即停止监听 return False # 鼠标点击监听回调 def on_click(x, y, button, pressed): global clicked_app if pressed: # 获取点击位置对应的窗口标题 hwnd = win32gui.WindowFromPoint((x, y)) clicked_app = win32gui.GetWindowText(hwnd) # 触发后立即停止监听 return False print('press any key or click on any application...') # 启动两个监听线程 key_listener = keyboard.Listener(on_press=on_press) mouse_listener = mouse.Listener(on_click=on_click) key_listener.start() mouse_listener.start() # 等待任一监听线程结束 while key_listener.is_alive() and mouse_listener.is_alive(): time.sleep(0.1) # 等待线程收尾 key_listener.join() mouse_listener.join() # 输出结果 if key_pressed: print(f'You pressed {key_pressed}.') if clicked_app: print(f'You clicked on {clicked_app}')
代码说明
- 键盘监听:捕获任意按键,区分普通字符和特殊按键(如
Key.space、Key.shift) - 鼠标监听:捕获左键点击(可修改为监听其他按键),通过
win32gui获取点击位置的窗口标题 - 双线程同时监听,任一输入触发后立即停止所有监听,继续执行后续逻辑
跨平台注意事项
- 如果是macOS/Linux平台,获取窗口标题的代码需要替换:
- macOS:使用
Quartz模块 - Linux:使用
Xlib模块
- macOS:使用
pynput本身是跨平台的,仅窗口标题获取部分需要适配系统
内容的提问来源于stack exchange,提问作者damageddarkness
相关产品推荐
相关产品推荐

