如何使用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




