You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyAutoGui重复返回错误鼠标位置问题求助

PyAutoGui在WSL2环境下获取鼠标坐标始终返回固定值的解决方法

问题描述

学习PyAutoGui时,尝试获取鼠标屏幕位置,无论如何移动鼠标,pyautogui.position()始终重复输出相同坐标(如X=70、Y=250)。使用VSCode搭配WSL2环境,已尝试重启、卸载重装模块,以及多种代码写法(包括循环输出坐标、displayMousePosition()方法)均无效。

测试代码示例:

import pyautogui 
import time 

print(pyautogui.size())
while True: 
    print(pyautogui.position())
    time.sleep(1)

输出示例:

Size(width=3840, height=1080)
Point(x=70, y=250)
Point(x=70, y=250)
Point(x=70, y=250)
...

原因分析

WSL2作为Linux子系统,默认无法直接访问Windows的桌面环境和输入设备。PyAutoGui依赖系统GUI层接口获取鼠标位置,未配置X Server的WSL2环境无法与Windows桌面建立交互,因此返回固定的默认坐标。

解决方案

方案1:配置X Server(推荐)

  1. 在Windows系统下载并安装VcXsrv Windows X Server
  2. 启动VcXsrv时勾选"Disable access control"选项,确保WSL2可正常连接
  3. 打开WSL2终端,执行以下命令设置环境变量:
    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
    
    若要永久生效,可将该命令添加到~/.bashrc或~/.zshrc文件末尾,实现终端启动时自动加载
  4. 验证连接:安装并运行xeyes(执行sudo apt install x11-apps && xeyes),若窗口正常显示且跟随鼠标移动,说明X Server配置成功,此时再运行PyAutoGui代码即可正常获取鼠标坐标

方案2:改用Windows原生Python环境

直接在Windows系统中安装Python和PyAutoGui,而非在WSL2环境运行。PyAutoGui在Windows原生环境下可直接调用系统API获取鼠标位置,无需额外配置。

内容的提问来源于stack exchange,提问作者Alex G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:15:35