Ubuntu18.04下Python mouse模块click无效 模拟鼠标点击方案咨询
mouse模块click()方法失效原因及修复方案 mouse库在Linux平台通过uinput内核接口实现输入模拟,Ubuntu 18.04环境下调用无反应基本都是权限问题导致的静默失效,按以下步骤配置即可正常使用:
- 给当前用户分配输入设备访问权限,终端执行:
sudo usermod -aG input $USER,执行完成后注销账户重新登录,或直接重启系统让权限生效 - 加载uinput内核模块,终端执行:
sudo modprobe uinput;如果需要开机自动加载该模块,将uinput写入配置文件/etc/modules-load.d/uinput.conf即可 - 运行Python脚本时需要加root权限,即使用
sudo python3 你的脚本文件名.py执行 - 测试参考代码:
import mouse import time # 移动到屏幕绝对坐标(100, 100)位置 mouse.move(100, 100, absolute=True, duration=0.2) time.sleep(0.1) # 触发左键点击 mouse.click('left')
如果完成以上配置后点击功能依然异常,可直接使用以下适配Ubuntu 18.04 + Python 3.6环境的稳定替代方案。
模拟鼠标点击的替代方案
- 方案1:调用系统工具xdotool
xdotool是X11桌面环境下原生的输入模拟工具,Ubuntu 18.04默认搭载X11显示服务,兼容性最好,无复杂权限配置问题。
先执行安装命令:sudo apt install -y xdotool
Python侧通过标准库subprocess调用即可,参考代码:import subprocess import time def click(x: int, y: int, button: str = 'left'): btn_map = {"left": "1", "middle": "2", "right": "3"} subprocess.run(["xdotool", "mousemove", str(x), str(y)], check=True) time.sleep(0.05) subprocess.run(["xdotool", "click", btn_map[button]], check=True) # 测试:点击坐标(200,200)位置左键 click(200, 200) - 方案2:使用PyAutoGUI库
PyAutoGUI是跨平台的桌面自动化库,完美适配Python 3.6版本,API封装简单,除鼠标控制外还支持键盘模拟、截图、图像识别定位等功能。
先安装依赖和库:
参考代码:sudo apt install -y python3-xlib python3-tk python3-dev pip3 install pyautoguiimport pyautogui # 移动到(300,300)位置单击左键 pyautogui.click(x=300, y=300, button='left') # 支持双击、右键、点击间隔等参数配置 # pyautogui.click(x=300, y=300, clicks=2, interval=0.5, button='right') - 方案3:直接调用python3-xlib接口
适合不想额外安装pip第三方库的精简环境,直接通过系统源提供的Xlib Python绑定实现底层输入模拟,执行安装命令:sudo apt install -y python3-xlib,即可编写代码实现点击逻辑,无额外依赖。
内容的提问来源于stack exchange,提问作者colonelPanic
相关产品推荐
相关产品推荐

