MacOS:使用Python

时间:2019-07-15 14:28:00

标签: python-3.x screenshot

我想通过从屏幕截图中读取来最小化(聊天)应用程序的某些状态。

我知道如何使用screencapture拍摄可见窗口的屏幕快照,但是我不知道如何将其推广到最小化的窗口。这似乎是Windows的一个有效示例:Python Screenshot of inactive window PrintWindow + win32gui

是否有MacOS等效产品?

编辑:我的问题不是上面链接的问题的重复,因为我需要的不只是win32,所以我还需要屏幕截图功能。

1 个答案:

答案 0 :(得分:0)

我创建了一个最小的工作示例:

from Quartz import CGWindowListCopyWindowInfo, kCGNullWindowID, kCGWindowListOptionAll
import matplotlib.pyplot as plt
from PIL import Image
import os
from uuid import uuid4

gen_filename = lambda : str(uuid4())[-10:] + '.jpg'

def capture_window(window_name):
    window_list = CGWindowListCopyWindowInfo(kCGWindowListOptionAll, kCGNullWindowID)
    for window in window_list:
        try:
            if window_name.lower() in window['kCGWindowName'].lower():
                filename = gen_filename()
                os.system('screencapture -l %s %s' %(window['kCGWindowNumber'], filename))
                img = Image.open(filename)
                plt.imshow(img)
                plt.xticks([])
                plt.yticks([])
                os.remove(filename)
                break
        except:
            pass
    else:
        raise Exception('Window %s not found.'%window_name)

它使用screencapture将窗口屏幕截图保存到一个临时文件,然后将其重新加载到Python中。