You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用pyautogui将鼠标光标移动至第二显示器?

解决PyAutoGUI无法移动光标到第二显示器的问题

嘿,我之前也碰到过一模一样的问题!PyAutoGUI默认确实容易把光标限制在主显示器范围内,不过有几个实用的办法能搞定这个问题:

  • 直接使用全局坐标移动
    双屏系统的整个桌面是一个虚拟的大屏幕,第二显示器的坐标是基于主屏幕的位置来计算的:

    • 如果第二屏在主屏幕右侧,它的X坐标范围是「主屏宽度」到「主屏宽度+第二屏宽度」
    • 如果第二屏在主屏幕左侧,它的X坐标范围是「-第二屏宽度」到0
      比如主屏是1920×1080,第二屏在右侧且分辨率相同,那直接调用pyautogui.moveTo(2880, 540)就能把光标移到第二屏的中间位置。
  • 修改PyAutoGUI的屏幕尺寸限制
    PyAutoGUI内部有两个全局变量控制屏幕的最大宽高,默认可能只取了主屏的尺寸。你可以手动修改它们来匹配整个虚拟桌面的大小,以Windows系统为例:

    import pyautogui
    import win32api
    
    # 获取整个虚拟桌面的宽高
    virtual_width = win32api.GetSystemMetrics(0)
    virtual_height = win32api.GetSystemMetrics(1)
    
    # 覆盖PyAutoGUI的默认屏幕尺寸限制
    pyautogui._PYAUTOGUI_SCREEN_WIDTH = virtual_width
    pyautogui._PYAUTOGUI_SCREEN_HEIGHT = virtual_height
    
    # 测试移动到第二屏
    pyautogui.moveTo(virtual_width - 300, 400)
    
  • 处理高DPI缩放的影响
    如果你的系统开启了屏幕缩放(比如125%、150%),PyAutoGUI可能会识别错误的坐标。可以在代码开头加上这段,让程序适配高DPI:

    import ctypes
    ctypes.windll.shcore.SetProcessDpiAwareness(1)
    
  • 备选方案:换用mouse
    如果上面的方法都不好使,mouse库对多屏的原生支持更友好,默认就能识别全局坐标。先安装:

    pip install mouse
    

    然后直接用:

    import mouse
    mouse.move(2000, 500)  # 直接移到第二屏对应坐标
    

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

火山引擎 最新活动