Python 之程序截图常见的几种方式

pywin32 + PyQt5

需要先 pip 安装 pywin32、PyQt5 ,相关依赖 pip 会自动安装。

pip install pywin32
pip install PyQt5

下面这种方式比较强悍,可以根据活跃窗口的 title 名称,自动找到对应的窗口然后进行截图。

import sysimport win32gui
from PyQt5.QtWidgets import QApplicationclass Window(object):def __init__(self, hwnd):self.hwnd = hwndself.window_title = win32gui.GetWindowText(hwnd)self.window_class_name = win32gui.GetClassName(hwnd)self.window_rect = win32gui.GetWindowRect(hwnd)def __str__(self):return f"hwnd: {self.hwnd}, window_title: {self.window_title}, window_class_name: {self.window_class_name}, window_rect: {self.window_rect}"class WindowsHandler(object):def __init__(self):self.current_windows = []self._init_all_windows()def _init_all_windows(self):win32gui.EnumWindows(self._get_window, 0)def _get_window(self, hwnd, nouse):if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):self.current_windows.append(Window(hwnd))def get_windows_by_title(self, title_name):return [window for window in self.current_windows if title_name in window.window_title]def screenshot_window_byPyQt(self, window: Window, img_save_path):app = QApplication(sys.argv)screen = QApplication.primaryScreen()img = screen.grabWindow(window.hwnd).toImage()img.save(img_save_path)if __name__ == '__main__':wh = WindowsHandler()windows = wh.get_windows_by_title("Looooking")if windows:window = windows[0]print(window)wh.screenshot_window_byPyQt(window, "./test.png")

pyautogui

安装好 pyautogui 库就好了,这个库主要用于鼠标键盘模拟操作,当然屏幕截图也是手到擒来。

import pyautoguiif __name__ == '__main__':screenshot = pyautogui.screenshot()  # 截全屏screenshot.save("full.png")screenshot = pyautogui.screenshot(region=(100, 100, 500, 500))  # 截图指定区域部分screenshot.save("part.png")

selenium

chromedriver(114 及以前的旧版): CNPM Binaries Mirror

chromedriver (115 及之后的新版):百度网盘链接:https://pan.baidu.com/s/1yk6js4yz_NBzXAp71ZIOzA?pwd=2vo3提取码:2vo3

还可以使用 selenium 对打开的浏览器窗口截图。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECif __name__ == '__main__':options = webdriver.ChromeOptions()service = webdriver.ChromeService(executable_path=r"./driver/chromedriver.exe")driver = webdriver.Chrome(options=options, service=service)driver.implicitly_wait(3)driver.maximize_window()driver.get('https://www.baidu.com/s')xpath_input = '//*[@id="kw"]'  # 搜索框xpath_search = '//*[@id="su"]'  # 搜索按钮ele_input = driver.find_element(By.XPATH, xpath_input)ele_input.clear()ele_input.send_keys("百度")driver.find_element(By.XPATH, xpath_search).click()WebDriverWait(driver, 3).until(EC.presence_of_all_elements_located((By.XPATH, '//*[@id="page"]/div/strong/span')))driver.save_screenshot("./test.png")driver.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于智慧校园安全用电监测系统的设计

人生人身安全是大家关注的话题,2019年12月中国消防统计近五年发生在全国学生宿舍的火灾2314起(中国消防2019.12.应急管理部消防救援局官方微博),违规电器是引发火灾的主因。如果在各寝室安装智能用电监测器实时监督线路参数&#…

MVSnet 代码详解(pytorch)

大致过一下MVSnet 论文中核心的点对应代码应该怎么写。 forward 函数需要 照片,映射矩阵,以及深度值。 照片的shape是 (1,5,3,1184,1600)代表着1个batch,5张图片,然后一次是每张图片的channel和…

Android低代码开发 - MenuPanel的源码剖析和基本使用

看了我上篇文章Android低代码开发 - 像启蒙和乐高玩具一样的MenuPanel 之后,本篇开始讲解代码。 源代码剖析 首先从MenuPanelItemRoot讲起。 package dora.widget.panelinterface MenuPanelItemRoot {/*** 菜单的标题。** return*/var title: String?fun hasTit…

大象资讯:PostgreSQL 17 Beta 1 发布!

↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~ PostgreSQL 全球开发小组 发布于 2024-05-23 PostgreSQL 全球开发小组宣布,PostgreSQL 17 的第一个测试版本现已可供下载。此版本包含 PostgreSQL 17 正式发布时将提供的所有功能的预…

IEN在Web3.0中的性能与安全优势

随着Web3.0的快速发展,优化网络基础设施变得至关重要。智能生态网络(Intelligent Ecological Network, IEN)作为新一代网络架构,在提升性能与增强安全方面展现出巨大潜力。本文将深入探讨IEN在Web3.0中的技术优势,并展…

高效利用键盘上的 caps lock(大写键)实现中英切换

先看效果 在中文输入环境中,Caps Lock 键经常被忽视,占据了键盘上的黄金位置却很少派上用场。接下来,我将介绍如何将这个闲置的键合理利用,让它变得更加实用。 第一步 设置: 我以五笔为例: 1.输入法默认…

docker如何拉取redis最新镜像并运行

要拉取Docker Hub上最新版本的Redis镜像,您可以使用以下命令: docker pull redis:latest 这里的latest标签会自动获取Redis镜像的最新版本。如果您希望指定一个确切的版本号,可以直接使用该版本号替换latest。例如,要拉取Redis版…

高铁VR虚拟全景展示提升企业实力和形象

步入VR的神奇世界,感受前所未有的汽车展示体验。VR虚拟现实技术以其独特的沉浸式模拟,让你仿佛置身于真实展厅之中,尽情探索汽车的每一处细节。 一、定制化展示,随心所欲 VR汽车虚拟展厅打破空间束缚,让汽车制造商能够…

力扣1809 没有广告的剧集(postgresql)

需求 Table: Playback ----------------- | Column Name | Type | ----------------- | session_id | int | | customer_id | int | | start_time | int | | end_time | int | ----------------- 该表主键为:session_id (剧集id) customer_…

VUE3.0-列表渲染

我们可以使用 v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法&#xff0c; 其中 items 是源数据的数组&#xff0c;而 item 是迭代项的别名 <template><h3>列表渲染</h3> <p v-for"item in names&quo…

调试时JSON库一直提示 PDB找不到 使用需要对象文件来进行调试的 /DEBUG:Fastlink生成的

最近调试时一直提示上面的提示框&#xff0c;很是烦躁。 为什么会出现这个错误呢&#xff0c;我一直使用的是/DEBUG。出现原因没有找出来&#xff0c;理论上市使用了/DEBUG:Fastlink这个模式才会出&#xff0c;但是就是一直在报这个错误。 /DEBUG&#xff08;生成调试信息&am…

同旺科技 FLUKE ADPT 隔离版发布 ---- 3

所需设备&#xff1a; 1、FLUKE ADPT 隔离版 内附链接&#xff1b; 应用于&#xff1a;福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于&#xff1a;福禄克Fluke 15B / 17B / 18B 总体连接&#xff1a; 连接线&#xff0c;根据自己实际需求而定&#xff1b; …

Flutter 中的 SnackBarAction 小部件:全面指南

Flutter 中的 SnackBarAction 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;SnackBar 是一种流行的用于提供轻量级反馈的方式&#xff0c;它可以在屏幕上短暂显示消息。SnackBarAction 则是与 SnackBar 结合使用的一种按钮组件&#xff0c;允许用户对显示的消息做出响…

数据结构--顺序表

1.顺序表的概念 1.1线性表 具有相同特性的数据元素的有限序列&#xff0c;再逻辑结构上呈现线性&#xff0c;但是在物理结构上不一定是线性&#xff08;也就是在内存中非线性&#xff09; 顺序表是线性表中的一种&#xff0c;他的底层逻辑就是数组&#xff0c;就是对数组的一…

flink程序本地运行:No ExecutorFactory found to execute the application

1.问题描述 在idea中运行flink job程序出现如下错误&#xff1a; Exception in thread "main" java.lang.IllegalStateException: No ExecutorFactory found to execute the application. at org.apache.flink.core.execution.DefaultExecutorServiceLoader.getE…

7文法分析 软设刷题 软考 +

文法分析 刷题1-55-1010-1515-2020-2525-3030-3535-4040-45 知识点1-55-1010-1515-2020-2525-3030-35 刷题 1-5 1 沟通渠道公式如下&#xff1a;Mn*&#xff08;n-1&#xff09;/ 2。M表示沟通渠道数&#xff0c;n表示项目中的成员数 2 本题给出的NFA&#xff0c;能够识别字…

基于STM32控制的双轮自平衡小车的设计

基于STM32控制的双轮自平衡小车的设计是一项涉及电子、控制理论、机械设计和编程的综合工程。以下是关于该设计的一个概述&#xff0c;包括关键组件、控制策略和示例代码。 设计概述 1. 项目背景 自平衡小车作为一种智能控制系统&#xff0c;其设计和实现涉及到多个学科领域…

c++20 std::jthread 源码简单赏析与应用

std::jthread 说明&#xff1a; std::jthread 是 C20 中引入的一个新特性&#xff0c;它是线程库中的一个类&#xff0c;专门用于处理 std::thread 与 std::stop_token 和 std::stop_source 之间的交互&#xff0c;以支持更优雅和安全的线程停止机制。 std::stop_source控制…

微软开发者大会:编程进入自然语言时代、“AI员工”闪亮登场

当地时间周二&#xff0c;美国科技公司微软召开年度Build开发者大会。在CEO纳德拉的带领下&#xff0c;微软各个产品团队再一次展现出惊人的执行力&#xff0c;在发布会上又拿出了接近50个新产品或功能更新。 整场发布会持续了接近两个小时&#xff0c;在这里挑选了一些投资者…

web自动化文件上传弹框处理

目录 文件上传介绍文件上传处理Alert 弹窗介绍Alert 弹窗处理 课程目标 掌握文件上传的场景以及文件上传的处理方式。掌握 Alert 弹窗的场景以及 Alert 弹窗的处理方式。 思考 碰到需要上传文件的场景&#xff0c;自动化测试应该如何解决&#xff1f; 文件上传处理 找到文…