PySide在QLabel上按住鼠标左键画方框

 用于截图放大等

import sys
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow
from PySide6.QtGui import QPixmap, QPainter, QPen, QColor
from PySide6.QtCore import Qt, QRect, QPointclass ImageLabel(QLabel):def __init__(self, parent=None):super().__init__(parent)self.start_pos = QPoint()  # 鼠标起点self.end_pos = QPoint()  # 鼠标终点self.erase = False  # 擦除self.rect = QRect()  # 方框# 重新定义鼠标按下事件def mousePressEvent(self, event):if event.button() == Qt.LeftButton:self.start_pos = event.position().toPoint()self.erase = Falseself.rect = QRect()# 重新定义鼠标移动事件def mouseMoveEvent(self, event):if self.start_pos:self.end_pos = event.position().toPoint()self.rect = QRect(self.start_pos, self.end_pos)self.update()# 重新定义鼠标松开事件def mouseReleaseEvent(self, event):if event.button() == Qt.LeftButton:self.end_pos = event.position().toPoint()self.rect = QRect(self.start_pos, self.end_pos)self.erase = True    # 这一行决定了松开鼠标后方框是否擦除self.update()self.normalize_rect()# print(self.rect.getRect())# 重新定义绘画事件def paintEvent(self, event):super().paintEvent(event)painter = QPainter(self)if not self.erase:   # 不擦除painter.setPen(QPen(QColor(255, 0, 0, 255), 2, Qt.SolidLine))else:    # 擦除painter.setPen(QPen(QColor(0, 0, 0, 0), 2, Qt.SolidLine))painter.drawRect(self.rect)# 将得到的方框所有参数都转换成正数def normalize_rect(self):x = self.rect.x()y = self.rect.y()width = self.rect.width()height = self.rect.height()if width < 0:x += widthwidth = abs(width)if height < 0:y += heightheight = abs(height)self.rect = QRect(x, y, width, height)print(self.rect)class MainWindow(QMainWindow):def __init__(self):super().__init__()self.image_label = ImageLabel()self.setCentralWidget(self.image_label)if __name__ == '__main__':app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec())

 

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

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

相关文章

在 Linux 中配置 SSH 连接的加密算法

需要对 OpenSSH 服务器和客户端进行相应配置。以下是具体步骤&#xff1a; 配置 OpenSSH 服务器的加密算法 1. 编辑 OpenSSH 服务器的配置文件&#xff1a; 打开 sshd_config 文件&#xff1a; sudo nano /etc/ssh/sshd_config2. 设置加密算法&#xff08;Ciphers&#xff…

python项目(课设)——飞机大战小游戏项目源码(pygame)

主程序 import pygame from plane_sprites import * class PlaneGame: """ 游戏类 """ def __init__(self): print("游戏初始化") # 初始化字体模块 pygame.font.init() # 创建游戏…

南卡、漫步者和Oladance开放式哪家强?无广避坑测评!

现在市面上的开放式耳机种类非常多&#xff0c;在购买的时候大多数人都没有非常确定的目标&#xff0c;这主要是因为大多数人对开放式耳机的认识程度不够。 作为一个有着多年数码产品测评经验的测评员&#xff0c;我刚好对开放式耳机也有比较深刻的理解&#xff0c;也借着大家…

策略模式:applicationContext.getBeansOfType()方法

applicationContext.getBeansOfType() 一般用来获取某个接口的所有实例Bean 方法定义如下&#xff1a; 入参一般是接口&#xff0c;即interface。响应是个Map结构&#xff0c;key bean在容器中的名称&#xff0c;value bean实列 开发步骤&#xff1a; 1.定义接口 2.定义…

智汇云舟成为中煤集团中煤智能创新联盟成员单位

6月21日&#xff0c;第八届世界智能产业博览会平行会议暨中煤智能创新联盟交流会在天津水游城丽筠酒店顺利举行。智汇云舟受邀参与&#xff0c;并由中国中煤能源集团授予荣誉证书&#xff0c;正式成为中煤智能创新联盟成员单位。会议上&#xff0c;清华大学、中国矿业大学&…

pip设置国内源:阿里云、腾讯云、清华大学源

更换Python的pip源&#xff08;尤其是默认源访问速度较慢时&#xff09;是一个常见需求&#xff0c;可以显著提升安装Python包的速度。以下是如何为pip设置国内源的步骤&#xff0c;以阿里云、腾讯云、清华大学源为例&#xff1a; 1. 备份原有源配置&#xff08;可选但推荐&am…

【SkiaSharp绘图08】SKPaint方法:自动换行、是否乱码、字符偏移、边界、截距、文本轮廓、测量文本

文章目录 SKPaint方法BreakText 计算指定宽度内可绘制的字符个数ContainsGlyphs字体是否包含文本字符(是否会乱码)GetGlyphOffsets 字符偏移量GetGlyphPositions 偏移坐标GetGlyphWidths 每个字符的宽度与边界GetHorizontalTextIntercepts 轮廓截距GetPositionedTextIntercepts…

CVPR 2024第三弹:李飞飞教授惊喜亮相,CVPR之家乐队火爆演奏惊艳全场

CVPR 2024第三弹&#xff1a;小编与李飞飞教授惊喜同框&#xff0c;"CVPR之家"乐队火爆演奏惊艳全场&#xff01; 会议之眼 快讯 2024 年 CVPR &#xff08;Computer Vision and Pattern Recogntion Conference) 即国际计算机视觉与模式识别会议&#xff0c;于6月1…

电脑ai写作软件,4款实用的软件!

在数字化时代&#xff0c;AI写作软件已经成为创作者们不可或缺的工具。它们利用先进的自然语言处理技术和大数据分析&#xff0c;能够快速生成高质量的文章&#xff0c;大大提升了创作效率。那么&#xff0c;市面上有哪些值得一试的电脑AI写作软件呢&#xff1f;让我们一起来盘…

mongodb嵌套聚合

db.order.aggregate([{$match: {// 下单时间"createTime": {$gte: ISODate("2024-05-01T00:00:00Z"),$lte: ISODate("2024-05-31T23:59:59Z")}// 商品名称,"goods.productName": /美国皓齿/,//订单状态 2:待发货 3:已发货 4:交易成功…

“神刊”CA再回巅峰!2024年JCR正式发布,共21848本期刊,附完整版EXCEL版下载!

2024 年 6 月 20 日&#xff0c;科睿唯安&#xff08;Clarivate Analytics&#xff09;发布了最新的《期刊引证报告》(Journal Citation Reports&#xff0c;JCR&#xff09;&#xff0c;以下简要介绍最新影响因子&#xff08;IF&#xff09;情况&#xff1a; 2023年完整版JCR…

【笔记】使用 openssl 生成服务器证书

CSR 即证书签名申请&#xff08;Certificate Signing Request&#xff09;&#xff0c;获取 SSL 证书&#xff0c;需要先生成 CSR 文件并提交给证书颁发机构&#xff08;CA&#xff09;。CSR 包含了用于签发证书的公钥、用于辨识的名称信息&#xff08;Distinguished Name&…

容器之工具栏构件演示

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDO…

[Qt]Qt框架解析:从入门到精通,探索平台开发的无限可能

一、Qt的概述 Qt是一个跨平台的C图形用户界面应用程序框架&#xff08;GUI&#xff09;。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正的组件编程。开发环境为Qt creator5.8.0&#xff0c;下载…

项目经验——交通行业数据可视化大屏、HMI设计

交通行业数据大屏、HMI设计时要的注意点&#xff1a;清晰可读、简洁直观、适配性强。颜色对比度满足WCAG标准&#xff0c;深色背景减少干扰&#xff0c;实时展示交通数据&#xff0c;支持有线网络控制内容更新&#xff0c;保障驾驶安全与决策效率。

通过“BOSS”精通比特币,深入认识私钥、账户和钱包

来源:币界原创 作者:636Marx 无论当今数字货币技术如何发展&#xff0c;认识区块链技术幕后的关键机制至关重要。无论您是新手还是经验丰富的数字货币从业者&#xff0c;掌握钱包地址、公钥和私钥的复杂性都有无可替代重要性。进入 BOSS Wallet&#xff0c;这是一款尖端的 Web…

ICMAN触摸芯片——防水触摸

ICMAN触摸芯片之防水触摸触摸按键控制开关和调节挡位和切换不同模式 淋水状态下&#xff0c;触摸按键反应灵敏&#xff0c;不误触发&#xff0c; ICMAN触摸芯片稳定性与抗干扰能力强&#xff0c; 可以轻松解决家电触摸感应不灵敏和有水误触发的问题&#xff0c; 从而有效实…

鸿蒙开发学习随记(1)——ArkTS基础语言学习

目录 变量与常量 数组 函数 常规函数 箭头函数 接口与对象 联合体 枚举类型 变量与常量 在ArkTS语言中有三种常见的数据类型&#xff1a;number,string,boolean。 变量这样声明定义&#xff1a; //变量命名let name:string "zhangsan"//let是一个关键字声明…

Ubuntu系统docker gpu环境搭建

Ubuntu系统dockergpu环境搭建 安装步骤前置安装安装指定版本的依赖包用docker官方脚本安装Docker-ce添加稳定仓库和GPG秘钥更新源 安装docker安装nvidia-docker2重启docker服务阿里云镜像加速 相关命令网络 docker常用命令镜像容器 docker相关问题解决方案使用wsl时docker的容器…

Linux_文件IO

目录 一、库函数进行文件操作 1、fopen/fclose 2、fwrite 3、追加方式-“a” 4、fread 5、三个默认文件流 二、系统函数进行文件操作 1、open/close 2、write 3、追加方式-“O_APPEND” 4、read 5、struct file结构体 6、文件描述符 6.1 struct file的引用…