【PyQt6】QScreen 屏幕截屏

文章目录

  • 0 环境
  • 1 简介
  • 2 QScreen 类
    • 2.1 获取 QScreen 的对象
    • 2.2 QScreen 的常见信息
  • 3. 示例代码

0 环境

- Python 3.12.1
- PyQt6                          6.6.1  ' pip install PyQt6 '
  PyQt6-Qt6                      6.6.1	 默认安装
  PyQt6-sip                      13.6.0  默认安装

1 简介

屏幕截图的方法: 使用 【PyQt6】的 QScreen.grabWindow() 方法

def grabWindow(self, WId=0, x, y, width, height) -> QPixmap:

WId: 窗口系统标识符, 默认 0 表示 屏幕将被抓取
偏移: x, y,
大小: width, height

如果想要全屏截图, 连参数都不需要写

    screen = QApplication.primaryScreen()
    pixmap = screen.grabWindow()
    pixmap.save('123.png')  # 可以直接保存为文件, qt 会根据扩展名 保存成不同的格式

2 QScreen 类

2.1 获取 QScreen 的对象

QScreen 不能被实例化,只能从 QGuiApplication 来获取

class QGuiApplication(QtCore.QCoreApplication):
...
	@staticmethod
    def screens() -> typing.List['QScreen']:  # 多个屏幕 ,可以用这个方法进行检索
    @staticmethod
    def primaryScreen() -> typing.Optional['QScreen']: # 主屏幕
...

2.2 QScreen 的常见信息

def screen_info():
    """
    打印屏幕的信息,包括名称/厂家/当前分辨率/刷新率/yi

    Args:
        screen: QScreen 类型
    """
    screen = QApplication.primaryScreen()
    print('screen.name', screen.name())
    print('screen.manufacturer', screen.manufacturer())
    print('screen.refreshRate', screen.refreshRate())
    print('screen.size', screen.size())
    print('screen.availableSize', screen.availableSize())
    print('screen.devicePixelRatio', screen.devicePixelRatio())

3. 示例代码

在 Qt 中 直接使用 QLabel 显示像素图比较方便
如果需要使用 opencv 和 matplotlib 来显示的话, 需要把像素图转成 ndarray 类型

from PyQt6.QtWidgets import QApplication, QLabel


def screen_info():
    """
    打印屏幕的信息,包括名称/厂家/当前分辨率/刷新率/yi

    Args:
        screen: QScreen 类型
    """
    screen = QApplication.primaryScreen()
    print('screen.name', screen.name())
    print('screen.manufacturer', screen.manufacturer())
    print('screen.refreshRate', screen.refreshRate())
    print('screen.size', screen.size())
    print('screen.availableSize', screen.availableSize())
    print('screen.devicePixelRatio', screen.devicePixelRatio())


def grabFullScreen():
    screen = QApplication.primaryScreen()
    pixmap = screen.grabWindow()
    return pixmap


if __name__ == '__main__':
    qApp = QApplication([])
    screen_info()

    pixmap = grabFullScreen()
    pixmap.save('123.png')

    w = QLabel()
    w.resize(pixmap.width()//3, pixmap.height()//3)

    w.setScaledContents(True)
    w.setPixmap(pixmap)
    w.show()

    qApp.exec()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言学习day13:for循环练习(生成随机数)

题目: 通过程序随机一个1-100的数,用户通过键盘输入数字 看是否匹配,匹配成功则跳出循环,失败则继续循环。 思路: 然后生成一个随机数需要写成死循环,同时需要有其他的出口可以写一个提示,比…

书生浦语大模型实战营-课程作业(3)

下载sentence_transformer的代码运行情况。sentence_transformer用于embedding(转向量) 本地构建持久化向量数据库。就是把txt和md文件抽取出纯文本,分割成定长(500)后转换成向量,保存到本地,称…

压缩PDF的大小-Adobe Acrobat Pro

经常遇到上传的pdf太大,无法成功上传。 今天找到一个方法: 打开Adobe Acrobat Pro软件 → 文件 → 另存为其他(H)... →缩小大小的PDF 版本选择 4.0 最低的版本。 文件由9M变为1.5M。

Vi 和 Vim 编辑器

Vi 和 Vim 编辑器 vi 和 vim 的基本介绍 Linux 系统会内置 vi 文本编辑器 Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 代码补完、编译及错误跳转等方便编程的功能特别丰富&…

C++ bfs反向搜索(五十七)【第四篇】

今天我们来学习bfs的反向搜索。 1.反向搜索 反向搜索:是从目标状态出发进行的搜索,一般用于终点状态唯一,起点状态有多种,且状态转移是可逆的(无向边)情况。 例题:在一个长度为 n 的坐标轴上&a…

备战蓝桥杯---图论之最短路dijkstra算法

目录 先分个类吧: 1.对于有向无环图,我们直接拓扑排序,和AOE网类似,把取max改成min即可。 2.边权全部相等,直接BFS即可 3.单源点最短路 从一个点出发,到达其他顶点的最短路长度。 Dijkstra算法&#x…

大学建筑专业的搜题软件?大学搜题工具中的高级搜索功能有哪些? #学习方法#微信#经验分享

学习和考试是大学生生活中不可避免的一部分,而在这个信息爆炸的时代,如何快速有效地获取学习资源和解答问题成为了大学生们共同面临的难题。为了解决这个问题,搜题和学习软件应运而生。今天,我将为大家介绍几款备受大学生青睐的搜…

AJAX——接口文档

1 接口文档 接口文档&#xff1a;描述接口的文章 接口&#xff1a;使用AJAX和服务器通讯时&#xff0c;使用的URL&#xff0c;请求方法&#xff0c;以及参数 传送门&#xff1a;AJAX阶段接口文档 <!DOCTYPE html> <html lang"en"><head><meta c…

《数电》理论笔记-第3章-常用组合逻辑电路及MSI组合电路模块的应用

一&#xff0c;编码器和译码器 1&#xff0c;编码器 编码:用由0和1组成的代码表示不同的事物。 编码器:实现编码功能的电路&#xff0c; 常见编码器:普通编码器、优先编码器、二进制编码器二-十进制编码器等等 1.1 三位二进制普通编码器和三位二进制优先编码器 1分58秒开始 …

Cocos2dx-lua ScrollView[一]基础篇

一.ScrollView概述 cocos游戏中ScrollView控件大量使用,95%以上的项目都会使用ScrollView,个别游戏可能全部使用翻页的滑动效果。如果想要精通Cocos的UI开发,精通ScrollView控件非常关键,因此对ScrollView的使用进行总结很有必要。 下文缩写说明:sv = ScrollView, item代…

具有集中目录服务器的 P2P 工作方式

P2P 工作方式概述 在 P2P 工作方式下&#xff0c;所有的音频/视频文件都是在普通的互联网用户之间传输。 具有集中目录服务器的 P2P 工作方式 Napster 最早使用 P2P 技术&#xff0c;提供免费下载 MP3 音乐。 Napster 将所有音乐文件的索引信息都集中存放在 Napster 目录服务…

【AIGC】Stable Diffusion的ControlNet参数入门

Stable Diffusion 中的 ControlNet 是一种用于控制图像生成过程的技术&#xff0c;它可以指导模型生成特定风格、内容或属性的图像。下面是关于 ControlNet 的界面参数的详细解释&#xff1a; 低显存模式 是一种在深度学习任务中用于处理显存受限设备的技术。在这种模式下&am…

VueCLI核心知识3:全局事件总线、消息订阅与发布

这两种方式都可以实现任意两个组件之间的通信 1 全局事件总线 1.安装全局事件总线 import Vue from vue import App from ./App.vueVue.config.productionTip false/* 1.第一种写法 */ // const Demo Vue.extend({}) // const d new Demo()// Vue.prototype.x d // 把Dem…

2024,欢迎来到性价比时代

「不是XX买不起&#xff0c;而是YY更有性价比。」——翻开过去一年的商业消费史&#xff0c;这句话几乎可以贯穿始终。年轻消费者们追求性价比的眼光一旦定型&#xff0c;一些品牌过去被品质生活、消费升级包装出来的华丽外壳&#xff0c;很容易一击就碎。 胜出的「性价比之王…

多模态基础---BERT

1. BERT简介 BERT用于将一个输入的句子转换为word_embedding&#xff0c;本质上是一个transformer的Encoder。 1.1 BERT的两种训练方法 预测被遮挡的单词预测两个句子是否是相邻的句子 1和2是同时训练的 1.1 BERT的四种用法 预测句子的类别&#xff1a;输入一个句子&…

redis为什么使用跳跃表而不是树

Redis中支持五种数据类型中有序集合Sorted Set的底层数据结构使用的跳跃表&#xff0c;为何不使用其他的如平衡二叉树、b树等数据结构呢&#xff1f; 1&#xff0c;redis的设计目标、性能需求&#xff1a; redis是高性能的非关系型&#xff08;NoSQL&#xff09;内存键值数据…

SpringMVC-入门

1.概念 SpringMVC是一种软件架构思想&#xff0c;把软件按照模型(Model)、视图(View)、控制器(Controller)这三层来划分。Model&#xff1a;指的是工程中JavaBean&#xff0c;用来处理数据View&#xff1a;指的是工程中的html、jsp等页面&#xff0c;用来展示给用户数据Control…

STM32物联网(ESP-01S模块及STM32和ESP-01S通信方式介绍)

文章目录 前言一、ESP-01S模块介绍二、STM32和ESP-01S通信方式介绍三、什么是AT指令四、创建基础工程总结 前言 本篇文章我们开始正式进入STM32物联网的专栏&#xff0c;在这个专栏中将会带大家学习使用STM32进行联网&#xff0c;联网模块的话主要就是使用到了ESP-01S WIFI模块…

在JavaScript中的防抖函数 - 通过在React中构建自动完成功能来解释

当你将一个新应用推向生产环境时&#xff0c;你希望确保它用户友好。网站的性能是用户体验的关键部分。每个用户都希望网站及其内容能够快速加载。每一秒都是宝贵的&#xff0c;可能导致用户再也不会访问你的网站。 在本指南中&#xff0c;我们将了解JavaScript中一个非常重要…

免费chatgpt使用

基本功能如下&#xff1a; https://go.aigcplus.cc/auth/register?inviteCode3HCULH2UD