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

Windows10+Python3.11下Xlib.Display()报socket.AF_UNIX不存在的AttributeError求助

问题根源

你用的Xlib库是针对Linux/Unix系统的X Window窗口环境开发的,Windows 10使用的是原生窗口系统,不支持Xlib依赖的AF_UNIX套接字,所以无论怎么调用Display()都会报错。

解决方法:使用Windows原生支持的库替代

以下两种方案都能在Windows 10+Python3.11环境下实现鼠标锁定/限制功能:

方案1:使用pywin32(基于Windows API)

先安装依赖:

pip install pywin32

示例代码(锁定鼠标到当前屏幕区域,5秒后释放):

import win32api
import win32gui
import time

# 获取当前主屏幕的区域范围
screen_width = win32api.GetSystemMetrics(0)
screen_height = win32api.GetSystemMetrics(1)
lock_rect = (0, 0, screen_width, screen_height)

# 锁定鼠标到指定区域
win32gui.ClipCursor(lock_rect)

# 保持锁定5秒
time.sleep(5)

# 释放鼠标锁定
win32gui.ClipCursor(None)

方案2:使用pynput(简洁的跨平台封装)

先安装依赖:

pip install pynput

示例代码(限制鼠标移动范围,5秒后解除):

from pynput.mouse import Controller
import time

mouse = Controller()

# 获取屏幕尺寸,定义锁定范围为整个屏幕
screen_size = mouse.screen.width, mouse.screen.height
lock_area = (0, 0, screen_size[0], screen_size[1])

# 将鼠标移到屏幕中心,开启移动限制
mouse.position = (screen_size[0]//2, screen_size[1]//2)
mouse._listener._suppress = True

try:
    time.sleep(5)
finally:
    # 解除鼠标移动限制
    mouse._listener._suppress = False
额外说明

你原代码中的@contextlib.contextmanager用法存在语法错误——这个装饰器需要装饰函数而非直接应用在root.grab_pointer调用上,但核心问题还是平台不兼容,替换库才是根本解决办法。

内容的提问来源于stack exchange,提问作者korsir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:30:42