Python 为什么ImageGrab.grab无法捕获整个屏幕?

Python 为什么ImageGrab.grab无法捕获整个屏幕?,python,python-imaging-library,screenshot,Python,Python Imaging Library,Screenshot,我试图使用PIL.ImageGrab.grab()捕获屏幕图像。 这是我的问题——当我使用下面的代码时,img只是我屏幕的左上角 from PIL import ImageGrab img = ImageGrab.grab() 使用win32api.GetSystemMetrics()查找我的屏幕大小 > GetSystemMetrics(0) Out[6]: 1280 > GetSystemMetrics(1) Out[7]: 720 然后我使用了ImageGrab.grab

我试图使用PIL.ImageGrab.grab()捕获屏幕图像。 这是我的问题——当我使用下面的代码时,
img
只是我屏幕的左上角

from PIL import ImageGrab
img = ImageGrab.grab()
使用
win32api.GetSystemMetrics()
查找我的屏幕大小

> GetSystemMetrics(0)
Out[6]: 1280

> GetSystemMetrics(1)
Out[7]: 720
然后我使用了
ImageGrab.grab((0,01280720))
,仍然得到了屏幕的左上角!不顾一切,我调用了
ImageGrab.grab((0,0140090))
,输出的是同一个部分图像,右下区域有一个黑色边框

我不知道发生了什么事。似乎其他人只需调用
ImageGrab.grab()
,就能捕捉到他们的屏幕


任何帮助都将不胜感激

当我试图学习本教程时,我在PIL上遇到了同样的问题

要解决这个问题,

->转到Python安装目录,右键单击Python.exe

->属性->兼容性选项卡->选中“禁用高DPI设置上的显示缩放”

对pythonw.exe重复相同的过程。希望你的问题解决。请让我知道。

作为,
有一个解决方法,可以在不干扰操作系统设置的情况下解决此问题。解决方案是使用以下方法在Windows上使您的程序能够识别DPI:


顺便说一下,我正在WIN10上使用python3.5,上面的所有操作都在Dell XPS笔记本电脑上执行。非常感谢!!你真的帮了我的忙!顺便说一下,“禁用高DPI设置上的显示缩放”现在替换为“覆盖高DPI缩放行为”。
from ctypes import windll
user32 = windll.user32
user32.SetProcessDPIAware()