PIL:ImageGrab.grab() 失败 - OSError:屏幕抓取失败

BoA*_*456 5 python python-imaging-library

我有一个脚本不断通过 PIL ImageGrab 截取屏幕截图。代码如下所示:

def updateScreenshot(self):
        self.screen = ImageGrab.grab()
Run Code Online (Sandbox Code Playgroud)

updateScreenshot()函数被调用的频率很高,比如每秒 2-3 次。该脚本运行良好,直到我重构该类并将所有屏幕截图相关代码移至封装所有屏幕截图逻辑的外部模型类。现在我的主类有:

self.screenshotService = ScreenshotService()
Run Code Online (Sandbox Code Playgroud)

在它的__init__ 函数中。然后 ScreenshotService 会被触发updateScreenshot()。前几次尝试updateScreenshot()仍然有效,之后出现以下错误:

File "...\screenshotService.py", line 15, in updateScreenshot
    self.screen = ImageGrab.grab()
  File "C:\Python34\lib\site-packages\PIL\ImageGrab.py", line 31, in grab
    size, data = grabber()
Run Code Online (Sandbox Code Playgroud)

我发现:

  1. https://github.com/python-pillow/Pillow/issues/1601
  2. 通过 python 脚本截取屏幕截图。[Linux]

但这些并没有真正为我指明正确的方向。

有任何想法吗?谢谢。

Python 3.4,PIL:5.4.1