首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用QPainter在PyQt标签中删除鼠标释放后的矩形

在PyQt标签中使用QPainter删除鼠标释放后的矩形,可以按照以下步骤进行操作:

  1. 首先,导入必要的模块和类:
代码语言:txt
复制
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt, QRect
  1. 创建一个自定义的标签类,继承自QLabel,并重写其中的一些方法:
代码语言:txt
复制
class CustomLabel(QLabel):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.rect = QRect()  # 用于存储矩形的坐标和尺寸

    def mousePressEvent(self, event):
        self.rect.setTopLeft(event.pos())  # 记录鼠标按下时的位置

    def mouseReleaseEvent(self, event):
        self.rect.setBottomRight(event.pos())  # 记录鼠标释放时的位置
        self.update()  # 更新标签的绘制

    def paintEvent(self, event):
        super().paintEvent(event)
        painter = QPainter(self)
        painter.setPen(QPen(Qt.red, 2, Qt.SolidLine))
        painter.drawRect(self.rect)  # 绘制矩形
  1. 创建主窗口类,并在其中添加自定义标签:
代码语言:txt
复制
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Delete Rectangle Example")
        self.setGeometry(100, 100, 400, 300)

        label = CustomLabel(self)
        label.setGeometry(50, 50, 300, 200)

        self.setCentralWidget(label)
  1. 创建应用程序对象,并运行主循环:
代码语言:txt
复制
if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

这样,当在标签上按下鼠标并释放后,会在标签上绘制一个红色的矩形。如果需要删除矩形,可以在鼠标释放后重新绘制标签,不包括矩形的部分。

推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云对象存储(COS)。

  • 腾讯云服务器(CVM):提供弹性计算能力,可根据业务需求灵活调整配置,支持多种操作系统,具备高性能、高可靠性和高安全性。 产品介绍链接地址:https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储(COS):提供海量、安全、低成本的云存储服务,适用于图片、音视频、文档等各类数据的存储和访问。 产品介绍链接地址:https://cloud.tencent.com/product/cos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

图像标注版本1-基本标注框

第二个版本,最常见到图像标注,多个标注框显示图片上 第三个版本,实现了标注Label选择,并且将结果保存下来 第四个版本,实现了基于当前位置双击,被标注框高亮显示和删除 第五个版本,对标注框结果进行各种类型保存...一、自定义一个QLabel QLabel定义初始化、鼠标点击、鼠标移动、鼠标释放和图像绘制事件。...鼠标点击及按下意味着初始坐标 鼠标移动记录标注动作,可以画也可以不画 鼠标释放记录标注框终点 图像绘制事件,主要交换了一下标注框坐标,网上很多是错,导致标注结果不对。...self.x0 = event.pos().x() self.y0 = event.pos().y() # 鼠标移动事件 # 绘制鼠标行进过程矩形框...,进行矩形框绘制 painter = QPainter(self) painter.setPen(QPen(Qt.red, 2, Qt.SolidLine))

27420

图像标注版本3-多标注框+标注标签

对多标注框代码重新做了优化,一个是关于正在绘制标注框显示问题,如果标签取消,则不予绘制,如果选择了标签才绘制出来 一、通过qt designer设计一个标签选择自定义Dialog窗口 # -...一个是初始化过程标签列表文件加载 一个是QListView点击事件 一个是Dialog返回值 最后一个是对OK按钮事件校验,确保已经选择了标签 from PyQt5 import QtCore...进行重写,参见加粗字体部分 引入了一个实时坐标的概念 鼠标移动事件,不断根据鼠标位置进行实时绘制 鼠标释放事件,增加了一个对话框选择项,确认将相关标注项加入到bboxlist(bboxlist...相对于2.0版本有所调整) 绘制事件,修正了对实时标注框单独绘制 from PyQt5.QtWidgets import QWidget, QApplication, QLabel from PyQt5...self.x0 = event.pos().x() self.y0 = event.pos().y() # 鼠标移动事件 # 绘制鼠标行进过程矩形

21520
  • 图像标注版本4-多标注框+标注标签+高亮和删除标签

    4.0版本3.0版本基础上增加了双击某个位置时,如果这个位置标注框内,则对选中标注框进行标识出来,同时提示是否要删除当前选中标注框,进行删除处理。...在这个版本首先需要增加双击事件,双击事件对当前鼠标位置是否属于某个标注框进行遍历,某个位置可能属于多标注框时,则按照先入原则,进行删除。...绘制事件主要是对当前位置所在标注框进行区分显示。 其他代码基本未变。...from PyQt5.QtCore import QRect, Qt from PyQt5.QtGui import QPixmap, QPainter, QPen from ui_labelchoose...self.x0 = event.pos().x() self.y0 = event.pos().y() # 鼠标移动事件 # 绘制鼠标行进过程矩形框 def

    24310

    图像标注版本5终版-多标注框+标注标签+高亮和删除标签+打开图片文件+保存标注格式

    ui_labelChoose.py,这个文件主要实现右键标注标签选择,比较简单不再重复,这个可以拆解为两个文件,实现UI和业务逻辑分离 # -*- coding: utf-8 -*- # Form...fileInfo字典,记录每次待标注图片名称和长宽,为了便于后续标注文件中使用。...): # 判断坐标是否标注框 if bbox[0] <= x <= bbox[2] and bbox[1] <= y <= bbox[...self.x0 = event.pos().x() self.y0 = event.pos().y() # 鼠标移动事件 # 绘制鼠标行进过程矩形框 def...一个label区,两个命令按钮,实现一个简单标注系统,为了适应打开文件初始化过程,也对MyLabel类做了一些简单修改。

    37720

    python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析

    PyQt中常用图像类有四种,QPixmap,QImage,QPicture,QBitmap 类型 描述 QPixmap 专门为绘图设计绘制图片时需要使用QPixmap QImage 提供了一个与硬件无关图像表示函数...,可以用于图片像素级访问 QPicture 是一个绘图设备类,它继承自QPainter类,可以使用QPainterbegin()函数QPicture上绘图,使用end()函数结束绘图,使用QPicture...save()函数将QPainter使用绘图指令保存在文件 QBitmap 是一个继承自QPixmap简单类,它提供了1bit深度二值图像类,QBitmap提供单色图像,可以用来制作游标(...代码分析 在这个例子,实现了简单绘图功能,按住鼠标左键画板上进行绘制,释放鼠标左键结束绘图 第一组代码:初始化代码         #实例化QPixmap类         self.pix...,并更新绘制,注意,这里button()函数可以获取鼠标指针移动过程按下所有按键,然后用Qt.LeftButton来判断是否按下了左键,mouseMoveEvent()必须使用该函数来判断按下鼠标按键

    1.4K31

    python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析

    PyQt5信号与槽可以说是对事件处理机制高级封装,如果说事件是用来创建窗口控件,那么信号与槽就是用来对这个控件进行使用,比如一个按钮,当我们使用按钮时,只关心clicked信号,至于这个按钮如何接受并处里鼠标点击事件...,然后发射这个信号,则不关心,但是如果要重载一个按钮,这时候就要关心了,比如可以改变它行为:鼠标按下时触发clicked信号,而不是释放PyQt5常见事件类型 pyqt是对Qt封装,qt程序是事件驱动...:widget显示与隐藏 窗口事件:窗口是否为当前窗口 还有一些常见qt事件,比如Socket事件,剪切板事件,字体改变事件,布局改变事件 使用事件处理方法 pyqt提供如下5事件处理和过滤方法...安装了一个事件过滤器,对于QObject全部事件来说,它们都会先传递到事件过滤函数eventFilter,在这个函数,我们可以抛弃或者修改这些事件,比如对自己感兴趣事件使用自定义处理机制,对其他事件采用默认事件处理机制...QApplicationnotify()方法 pyqt使用notify来分发事件,要想在任何事件处理器之前捕获事件,唯一方法就是重新实现QApplicationnotify(),在实践调试才会用这中方法

    2.6K21

    小白白也能学会 PyQt 教程 —— 自定义组件 Switch Button

    代码使用了一个布尔类型变量 _switch_on 来表示按钮状态,初始状态为 False,表示关闭状态。点击按钮,会切换状态并更新按钮颜色。 接下来,我们需要绘制按钮外观。...代码使用了 paintEvent 方法来实现按钮绘制。该方法会被 Qt 框架自动调用,我们可以在其中使用 QPainter 对象进行绘制操作。...为了美观,绘制过程,首先绘制了按钮背景,使用了一个带圆角矩形,并填充了浅灰色。然后根据按钮状态绘制按钮内部,使用了带圆角矩形,并填充了相应颜色。这样就完成了按钮外观绘制。...该方法,首先检查是否是鼠标左键按下,然后根据当前按钮状态设置动画方向,并启动动画。动画会逐渐改变按钮位置,从而实现平滑过渡效果。...动画完成,会调用 _on_animation_finished 方法。该方法会更新按钮状态和颜色,并发射 switch_toggled 信号,通知应用程序按钮状态变化。

    1.2K52

    Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)

    目录 1、QPainter绘图类 2、QPen绘图类 3、QBrush绘图类 4、QPixmap绘图类 ---- 本篇博文主要介绍如何实现在窗口中绘图, PyQt5,一般可以通过QPainter、QPen...使用size()方法得到窗口的当前大小,窗口中随机分布工作区点。最后使用drawPoint()方法绘制一个个点。...使用Qt.customDashLine创建线条样式,然后调用setDashPattern()方法使用数字列表定义样式。数字列表个数必须是偶数,本例数字列表是[1,4,5,4],它个数是4。...,它可以作为一个QPaintDevice对象,也可以加载到一个控件,通常是标签或按钮,用于标签或按钮上显示图像。...QPixmap类常用方法如下表所示: 示例使用setPixmap()将图像显示QLabel上。

    2K40

    Python Qt GUI设计:5种事件处理机制(提升篇—3)

    比如可以改变它行为:鼠标按键按下时触发clicked信号,而不是释放时。 1、常见事件类型 Qt事件类型有很多,常见Qt事件如下所示: 键盘事件:按键按下和松开。...2.1、重新实现事件函数例子补充以下代码,实现重新定义: '''重新实现其他事件,适用于PyQt没有提供该事件处理函数情况,Tab键由于涉及焦点切换,不会传递给keyPressEvent...示例,这个过滤器只对label1事件进行处理,并且只处理它鼠标按下事件(MouseButtonPress)和鼠标释放事件(MouseButtonRelease) 。...2.3、安装事件过滤器示例基础上修改,屏蔽三个label标签控件installEventFilter代码,这种事件处理方法确实过滤了所有事件,而不像第三种方法那样只过滤三个标签控件事件。...()方法 PyQt使用notify()来分发事件,要想在任何事件处理器之前捕获事件,唯一方法就是重新实现QApplicationnotify(),在实践调试时才会使用这种方法,实际基本用不多

    2.3K30

    使用PyQtQLabel组件实现选定目标框功能方法示例

    问题背景   基于PyQt5开发了一个可以用于目标跟踪软件,开发过程遇到一个问题,就是如何在PyQt5组件QLable自主选定目标框,这个opencv里面有专门函数完成这个工作:cv2.selectROI...(),我目的就是QLabel基础上,实现类似函数cv2.selectROI()功能,这样在运行程序过程,就能在视频框里面直接选取感兴趣区域。...实现思路   具体要实现功能是,视频显示区域,点击鼠标左键,开启选择,按照鼠标左键,移动游标,慢慢地绘制出红色目标框。释放鼠标左键就停止选择目标框。...子类命名为Label,继承自QLabel类,子类重写鼠标事件函数,接受鼠标Label对象上位置信号。...QRect类是是PyQt内置数据结构,具体结构是这样Rect=(x,y,w,h),之后就调用画笔对象方法动态绘制目标框。直到绘制标志位被关闭,就是释放鼠标,则停止绘画。

    2.7K10

    『开发技术』LabelImg安装及使用介绍

    单击“菜单/文件”“更改默认保存注释文件夹” 点击“打开目录” 点击“创建RectBox” 单击并释放鼠标左键以选择要注释矩形区域 您可以使用鼠标右键拖动矩形框进行复制或移动 注释将保存到您指定文件夹...步骤(YOLO) data/predefined_classes.txt定义将用于培训类列表使用上述说明构建和启动。...工具栏右下方“保存”按钮下,单击“PascalVOC”按钮切换到YOLO格式。 您可以使用Open / OpenDIR处理单个或多个图像。完成单个图像,单击“保存”。...注意: 您标签列表处理图像列表过程不得更改。保存图像时,classes.txt也会更新,而以前注释不会更新。 保存为YOLO格式时不应使用“默认类”功能,不会引用它。...s 保存 Ctrl + d 复制当前标签矩形框 空间 将当前图像标记为已验证 w ^ 创建一个矩形框 d 下一张图片 一个 上一张图片 德尔 删除所选矩形框 按Ctrl + 放大 Ctrl-- 缩小

    2.1K30

    QPushButton 基本使用

    通过使用QPushButton,开发人员可以轻松地Qt应用程序添加按钮并实现自定义外观和行为,从而为用户提供更好界面体验。...方法体内,您可以使用 QPainter 类来绘制按钮外观,例如绘制背景、文本和图标。...) # 自定义绘制代码 # 绘制按钮背景、文本和图标 painter.end() 在上述代码,我们创建了一个 QPainter 实例,并使用其方法来绘制按钮外观。...您可以使用各种绘图方法和属性来实现所需外观效果。 4、使用自定义按钮: 创建自定义按钮,您可以像使用普通按钮一样应用程序中使用它。...希望本博客能够帮助读者理解 PyQt 按钮基本知识和用法,并激发他们进一步探索和实践兴趣。祝愿读者使用 PyQt 框架时能够灵活运用按钮,并开发出出色用户界面。

    57840

    Python Qt GUI设计:QPrinter打印图片类(基础篇—21)

    打印图像是图像处理软件一个常用功能,打印图像实际上是QPaintDevice画图,与平常在QWidget、QPixmap和Qlmage画图一样,都是创建一个QPainter对象进行画图,只是打印使用是...通过一个示例了解QPrinter打印图片类使用,效果如下所示: 实现代码如下所示: from PyQt5.QtCore import Qt from PyQt5.QtGui import QImage...(printer,self) ''' 判断打印对话框显示后用户是否单击“打印”按钮,若单击“打印”按钮, 则相关打印属性可以通过创建QPrintDialog对象时使用...painter=QPainter(printer) # 获得QPainter对象视口矩形 rect=painter.viewport() # 获得图像大小 size=...self.image.size() # 按照图形比例大小重新设置视口矩形 size.scale(rect.size(),Qt.KeepAspectRatio) painter.setViewport

    1K30

    Qt官方示例-拖放机器人

    (当鼠标拖动项目时释放鼠标按钮时)。 我们将其重置dragOver为false,分配机器人部件新颜色,然后调用update()。   ...该实现分为两个部分:如果将图像放置头部上,则绘制图像,否则将绘制带有简单矢量图形圆形矩形机器人头部。   ...= new QDrag(event->widget()); QMimeData *mime = new QMimeData; drag->setMimeData(mime);   区域内按下鼠标按钮四处移动鼠标时...Qt将确保正确时间删除该对象。我们还创建了一个QMimeData实例,该实例可以包含我们颜色或图像数据,并将其分配给拖动对象。...我们还选择使用边界矩形更新来简化可视更新处理。该视图具有固定沙色背景和窗口标题。   最后,我们显示视图。控件进入事件循环,动画立即开始。

    4.8K41

    使用PyQt5实现图片查看器示例代码

    一、前言 在学习 PyQt5 过程我会不断地做一些小 Demo,用于让自己能够更好地理解和学习,这次要做就是一个图片查看器,主要功能包括打开图片、拖动图片、放大和缩小图片。...一般会使用在修改或者提高现有组件功能,或者创建自己组件,使用 PyQt5 绘图 API 进行操作。... Qt 中有 QPainter 类用于执行绘制操作,绘图由 paintEvent() 来完成,绘图代码要放在 QPainter 对象 start() 和 end() 方法之间。... QPainter ,可以根据 QPainter 坐标系进行各种变换,例如平移(translate)和变化(scale),这里就可以通过使用 scale() 方法实现放大和缩小图片。...到此这篇关于使用PyQt5实现图片查看器示例代码文章就介绍到这了,更多相关PyQt5 图片查看器内容请搜索ZaLou.Cn

    1.8K10

    python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例

    窗口背景主要包括,背景色与背景图片,设置窗口背景有三种方法 使用QSS设置窗口背景 使用QPalette设置窗口背景 实现PainEvent,使用QPainter绘制背景 QSS设置窗口背景 QSS...import QApplication, QWidget from PyQt5.QtGui import QPainter,QPixmap from PyQt5.QtCore import Qt...,使之看起来是透明,它参数可以为QBitmap或QRegion对象,此处调用QPixmapmask()函数获得图片自身遮罩,是一个QBitmap对象,实例中使用是PNG格式图片,它透明部分就是一个遮罩...不规则窗口实例 2 使用两张图片,一张用来做遮罩来控制窗口大小,然后利用paintEvent()函数重绘另一张为窗口背景图。...import sys from PyQt5.QtWidgets import QApplication,QWidget from PyQt5.QtGui import QPixmap,QPainter,

    2.9K22
    领券