首页
学习
活动
专区
工具
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_()

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

推荐的腾讯云相关产品:

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

相关·内容

图像标注版本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))

28820

图像标注版本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() # 鼠标移动事件 # 绘制鼠标行进过程中的矩形框

23620
  • 图像标注版本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

    25510

    图像标注版本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类做了一些简单修改。

    39620

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

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

    1.3K52

    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上。

    2.2K40

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

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

    2.3K30

    『开发技术』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 框架时能够灵活运用按钮,并开发出出色的用户界面。

    66440

    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

    1.1K30

    Qt官方示例-拖放机器人

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

    4.8K41

    LabelImg教程

    大家好,又见面了,我是你们的朋友全栈君。 目标检测中,原始图片的标注过程是非常重要的,它的作用是在原始图像中标注目标物体位置并对每张图片生成相应的xml文件表示目标标准框的位置。...在labelImg-master目录下使用终端执行 python labelImg.py 运行界面如下图 Demo Image 5、快捷键 Ctrl + u 加载目录中的所有图像,鼠标点击Open...创建一个矩形框 d 下一张图片 a 上一张图片 del 删除选定的矩形框 Ctrl++ 放大 Ctrl– 缩小 ↑→↓← 键盘箭头移动选定的矩形框...6、具体事项 想要修改图2中的标签类别内容(如默认的dog、person、cat等)则在主目录下data文件夹中的predefined_classes.txt文件中修改。...使用时,使用ctrl+u快捷键加载图片后,使用ctrl+r快捷键指定生成的xml文件的保存位置,然后开始按照类别将图片中的目标进行矩形框标注,每标注一个目标后软件自动弹出类别信息以供选择,在弹出的类别信息中选择对应的类别名称双击即可

    2.9K20

    讲解pyqt5 opengl demo

    在本篇文章中,我们将讲解如何使用 PyQt5 创建一个简单的 OpenGL Demo。步骤1: 安装 PyQt5首先,我们需要安装 PyQt5 库。...当用户点击鼠标左键时,在OpenGL窗口中绘制一个红色的点,并更新显示。 运行这段代码后,将会弹出一个窗口。当你在窗口内点击鼠标左键时,会在点击位置绘制一个红色的点。...你可以多次点击鼠标左键,在不同的位置绘制多个点。 这个示例演示了如何在OpenGL窗口中绘制2D图形,并且响应鼠标事件实现用户交互。你可以根据实际需要进一步扩展和定制功能,添加更多的绘制元素和功能。...支持多线程编程:PyQt5提供了多线程编程的支持,可以在应用程序中使用多个线程来同时执行不同的任务,提高程序的效率和性能。...你可以在Qt Designer中拖放工具和组件来布局界面,然后使用PyQt5将设计好的界面与后端Python代码进行连接。

    57610

    州的先生 Python 图形界面美化代码正式开源分享!

    一方面是官方文档的缺失,一方面是中文文档的缺失,还有一方面则是示例的缺失。 导致每一个使用 Python 进行桌面图形程序开发的小伙伴,几乎都是摸着石头踩着坑成长起来的。...基于此,也积累了很多适合于初学者参考和学习的程序代码。其中最受欢迎的,当属 PyQt5 图形美化教程这篇文章了。...之前只是对这篇文章中涉及到的图片素材进行了提供,至于源码,都让小伙伴们自行根据文章中的代码块进行组织。 虽然不是很难,但是很多初学者依然是摸不着头脑。...self.m_DragPosition) QMouseEvent.accept() def mouseReleaseEvent(self, QMouseEvent): # 鼠标释放事件...目前,代码开源在了州的先生在 Gitee 创建的仓库python-gui中: 图形界面美化的代码位于example目录中,这个目录后续将会持续开源一些 Python 图形界面程序的实例代码;然后docs

    1.5K10

    PyQt5 基本窗口控件(绘图类 拖拽 剪贴板 日历时间 菜单、工具、状态栏 打印)

    窗口绘图类 1.1 QPainter 在 QWidget上执行绘图操作 在QWidget.paintEvent() 中完成,绘制方法必须在 QtGui.QPainter对象的 begin() 和 end...fr=aladdin DragEnterEvent,当执行一个拖曳控件操作,并且鼠标指针进入该控件时,这个事件将被触发,在这个事件中可以获得被操作的窗口控件,还可以有条件地接受或拒绝该拖曳操作 DragMoveEvent...,在拖曳操作进行时会触发该事件 DragLeaveEvent,当执行一个拖曳控件操作,并且鼠标指针离开该控件时,这个事件将被触发 DropEvent,当拖曳操作在目标控件上被释放时,这个事件将被触发...self.initUI() def initUI(self): layout = QFormLayout() label = QLabel('把左边的文本拖拽到右边的下拉框中...edit = file.addMenu('编辑') # 在文件菜单中创建编辑菜单 edit.addAction('复制') # 在编辑菜单中添加复制菜单

    1.9K20
    领券