【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开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

PyQt6中QMainWindow组件的使用详解

《PyQt6中QMainWindow组件的使用详解》QMainWindow是PyQt6中用于构建桌面应用程序的基础组件,本文主要介绍了PyQt6中QMainWindow组件的使用,具有一定的参考价值,... 目录1. QMainWindow 组php件概述2. 使用 QMainWindow3. QMainW

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

PyQt6/PySide6中QTableView类的实现

《PyQt6/PySide6中QTableView类的实现》本文主要介绍了PyQt6/PySide6中QTableView类的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录1. 基本概念2. 创建 QTableView 实例3. QTableView 的常用属性和方法

PyQt6/PySide6中QTreeView类的实现

《PyQt6/PySide6中QTreeView类的实现》QTreeView是PyQt6或PySide6库中用于显示分层数据的控件,本文主要介绍了PyQt6/PySide6中QTreeView类的实现... 目录1. 基本概念2. 创建 QTreeView 实例3. QTreeView 的常用属性和方法属性

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

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

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

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

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