Python 多监视器设置pyautogui上的屏幕截图

Python 多监视器设置pyautogui上的屏幕截图,python,python-3.x,linux,windows,macos,Python,Python 3.x,Linux,Windows,Macos,我使用python中的pyautogui进行屏幕截图 import pyautogui screen = pyautogui.screenshot() screen.save("file.jpg") 它可以在所有平台上的单个屏幕上正常工作。但在多屏幕系统中,它将两个屏幕合并在一个屏幕截图中。但是我想要一个当前正在使用的显示器的屏幕截图。如果您访问的官方文档网站,您将看到: 问:PyAutoGUI在多监视器设置上工作吗 答:不,现在PyAutoGUI只处理主监视器 为此,您可

我使用python中的pyautogui进行屏幕截图

import pyautogui
screen = pyautogui.screenshot()
screen.save("file.jpg")

它可以在所有平台上的单个屏幕上正常工作。但在多屏幕系统中,它将两个屏幕合并在一个屏幕截图中。但是我想要一个当前正在使用的显示器的屏幕截图。

如果您访问的官方文档网站,您将看到:

问:PyAutoGUI在多监视器设置上工作吗

答:不,现在PyAutoGUI只处理主监视器

为此,您可以使用mss模块

从mss导入mss
#每个监视器一个屏幕截图:
对于screenshotter.save()中的文件名:
打印(文件名)
#监视器1的屏幕截图:
对于screenshotter.save(screen=1)中的文件名:
打印(文件名)
#监视器1的屏幕截图,带有回调:
_上存在def(fname):
''当我们试图覆盖现有的
截图。
'''
从操作系统导入重命名
从os.path导入isfile
如果是isfile(fname):
newfile=fname+'.old'
打印(“{0}->{1}”。格式(fname,newfile))
重命名(fname,newfile)
返回真值
对于screenshotter.save(screen=1,callback=on_)中的文件名:
打印(文件名)
#一个截图来抓取他们所有人:
对于screenshotter.save(output='fullscreen-shot.png',screen=-1)中的文件名:
打印(文件名)
找到了解决方案


pyautogui.screenshot()将捕获所有屏幕。

有一个可选的
区域
参数。与之一起,你应该能够实现你想要的。请注意,某些屏幕的位置可能为负值。
from PIL import ImageGrab
from functools import partial
ImageGrab.grab = partial(ImageGrab.grab, all_screens=True)