【PyQt6】QScreen 屏幕截屏

2024-02-16 08:04
文章标签 屏幕 截屏 pyqt6 qscreen

本文主要是介绍【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):
...@staticmethoddef screens() -> typing.List['QScreen']:  # 多个屏幕 ,可以用这个方法进行检索@staticmethoddef primaryScreen() -> typing.Optional['QScreen']: # 主屏幕
...

2.2 QScreen 的常见信息

def screen_info():"""打印屏幕的信息,包括名称/厂家/当前分辨率/刷新率/yiArgs: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, QLabeldef screen_info():"""打印屏幕的信息,包括名称/厂家/当前分辨率/刷新率/yiArgs: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 pixmapif __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()

在这里插入图片描述

这篇关于【PyQt6】QScreen 屏幕截屏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713966

相关文章

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

安卓实现弹出软键盘屏幕自适应调整

今天,我通过尝试诸多方法,最终实现了软键盘弹出屏幕的自适应。      其实,一开始我想通过EditText的事件来实现,后来发现,安卓自带的函数十分强大,只需几行代码,便可实现。实现如下:     在Manifest中设置activity的属性:android:windowSoftInputMode="adjustUnspecified|stateHidden|adjustResi

没资料的屏幕怎么点亮?思路分享

这次尝试调通一个没资料的屏幕,型号是HYT13264,这个是淘宝上面的老王2.9元屏,成色很好但是长期库存没有资料和代码能点亮,仅仅只有一个引脚定义。这里我使用Arduino Nano作为控制器尝试点亮这个模块。 首先,已知别人找出来的线序如下 1 - CS2 - RST 3 - DC4 - SCK5 - SDA6 - VCC7 - GND8 - K59 - K410

Cocos2d-x自适应Android屏幕分辨

ndroid下分辨率太多,不太可能为每种分辨率做一套资源,目前一般来说比较流行的是320*480, 800*400, 854*400。当然现在720P的也出来了,但至少目前不是主流机型^_^. 对于不支持的分辨率,我希望的是能够按照屏幕大小按比例缩放,即有了下面的代码。 1:ViewAutoScale 写了一个ViewAutoScale函数,如下:   #include "ViewAuto

Python教程(二十) : 十分钟入门【PyQt6】

文章目录 专栏列表环境准备1 安装 Python2 安装 PyQt6 创建 PyQt6 项目1 创建项目目录2 创建主 Python 文件 代码书写测试流程1 导入 PyQt6 模块2 创建主窗口类3 创建应用程序实例并运行 核心解析:PyQt6 中的模块示例代码: PyQt6 常用的控件1. QPushButton(按钮)2. QLabel(标签)3. QLineEdit(文本输入框)4