实现思路是先获取到以后最下面流动的窗口信息,而后提取该窗口的名称信息。
【浏览全文】
之后获取窗口的坐标信息,即左上角的开始坐标及右下角的完结坐标。最初间接截图并将截图的图片进行展现。
其中用到了两个第三方模块,别离是 win32gui 和 Pillow,装置命令如下:
pip install Pillow
pip install win32gui
将其中应用到的三个非标准库导入进来。
from win32gui import * # 操作 windows 窗口
from PIL import ImageGrab # 操作图像
import win32con # 零碎操作
初始化一个 set 列表寄存所有流动窗口名称,应用 set 类型的目标是保障所有流动窗口名称的唯一性。
names = set()
编写 get_window_title 函数,获取以后的所有流动窗口对象。
def get_window_title(window, nouse):
'''
获取窗口题目函数
:param window: 窗口对象
:param nouse:
:return:
'''
if IsWindow(window) and IsWindowEnabled(window) and IsWindowVisible(window):
names.add(GetWindowText(window))
EnumWindows(get_window_title, 0)
list_ = [name for name in names if name]
for n in list_:
print('流动窗口:', n)
输出本人想要截图的窗口名称作为以后窗口,而后提取到须要截图的窗口对象。
name = input('请输出须要截图的流动窗口名称: \n')
window = FindWindow(0, name) # 依据窗口名称获取窗口对象
ShowWindow(window, win32con.SW_MAXIMIZE) # 将该窗口最大化
获取该窗口的坐标信息,开始坐标信息和完结坐标信息。
x_start, y_start, x_end, y_end = GetWindowRect(window)
# 坐标信息
box = (x_start, y_start, x_end, y_end)
调用 ImageGrab.grab() 函数实现对窗口的截图操作。
image = ImageGrab.grab(box)
在实现截图之后展现一下截图的成果,如果不须要展现的话就不须要增加这行代码了。
image.show() # 图片展现,如果截完图须要展现则放开此项
最初一步,将截图好的图片保留下来。
image.save('target.png')
print('截图曾经保留实现!')
下面整个的 python 截图操作就实现了,目前正在思考怎么实现批量截图的过程,有好的倡议能够间接留言或是私信,感激大家始终以来的反对!
【往期精彩】
怎么用 python 做一个解压缩小工具 …
python 中最简略的 turtle 绘图:奥运五环!
常识汇总:python 办公自动化应该学习哪些内容?
python 多线程同步售票零碎解决思路 …
发现几个好玩的游戏编程平台,与君共勉!