如何用Python实现鼠标X轴移动检测、按键监听及动作触发?
解决方案
依赖库安装
先安装所需第三方库:
pip install pyautogui pynput pyperclip
完整实现代码
import pyautogui import pyperclip from pynput.keyboard import Key, Listener # 全局配置与状态变量 my_switch = 0 # 鼠标X轴触发移动阈值(单位:像素) X_MOVE_THRESHOLD = 50 # 记录上次鼠标X坐标 last_x = pyautogui.position()[0] # 指定触发动作的按住按键(示例为左Ctrl,可自行修改) TRIGGER_KEY = Key.ctrl_l # 标记按键是否处于按住状态 key_held = False def on_press(key): global key_held if key == TRIGGER_KEY: key_held = True def on_release(key): global key_held if key == TRIGGER_KEY: key_held = False # 启动按键监听线程 listener = Listener(on_press=on_press, on_release=on_release) listener.start() def check_clipboard(): # 检测剪贴板是否有非空内容 clipboard_content = pyperclip.paste() return bool(clipboard_content.strip()) try: while True: current_x = pyautogui.position()[0] # 满足条件:按住指定按键 + 鼠标向右移动超过阈值 if key_held and (current_x - last_x) >= X_MOVE_THRESHOLD: last_x = current_x # 状态循环切换(0→1→2→0) my_switch = my_switch % 3 if my_switch == 0: print("执行第一个动作") # 可在此添加剪贴板检测逻辑,比如: # if check_clipboard(): # print("剪贴板内容:", pyperclip.paste()) my_switch += 1 elif my_switch == 1: print("执行第二个动作") my_switch += 1 elif my_switch == 2: print("执行第三个动作") my_switch += 1 # 鼠标左移时更新基准X坐标,避免后续误触发 elif current_x < last_x: last_x = current_x except KeyboardInterrupt: # 按Ctrl+C终止程序,同时停止按键监听 listener.stop() print("程序已退出")
代码说明
- 按键监听:用
pynput实时检测指定按键的按住状态,仅在按键按住时响应鼠标移动,避免误触发 - 鼠标X轴检测:只关注X坐标变化,向右移动超过设定阈值时触发动作;鼠标左移时更新基准坐标,防止重复触发
- 状态切换:通过
my_switch % 3实现三个状态的循环切换,每个状态对应不同动作 - 剪贴板检测:
check_clipboard()函数可检测剪贴板是否有非空内容,可按需在对应动作中调用 - 退出机制:按下
Ctrl+C可终止程序,同时停止按键监听线程
内容的提问来源于stack exchange,提问作者user20882682
相关产品推荐
相关产品推荐

