pyqt5中label设置背景图,并在背景图上根据输入坐标进行框选并实现放大缩小跟随

step1、搭建主界面,为演示使用,主界面仅包括一个button和一个lable,并在label中设置背景图( self.label.setPixmap(QtGui.QPixmap("…/…/libo.jpg"))
为了让背景图自动填充label,需要加上self.label.setScaledContents(True)
step2、由于需要在label上作图,所以要重写label类,命名为Mylabel,该类中主要为进行框选作图,并实时更新
step3、为了根据界面大小,框选自动跟随,需要添加 def resizeEvent(self, event)函数,该函数会自动监控界面大小变化
step4、通过button输入初始坐标

实现框选跟随的实现主要通过更新label的长宽的变化来实现起始坐标的变化,以及放大倍数的变化

from PyQt5.QtGui import *
from PyQt5.QtCore import QRect,Qt,QPoint
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication,QMainWindow
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QLabel
import json
import sys
import time
import re
import cv2

a = [0] # x坐标相对位置(以第一次为参考)
b = [0] # 坐标相对位置(以第一次为参考)
x_start = [0] # 起始点的x坐标
y_start = [0] # 起始点的Y坐标
x_length = [0] # 长度
y_width = [0] # 宽度
label_x0 = [] # label的起点x坐标
label_x1 = [] # label的起点y坐标
label_y0 = [] # label的长度
label_y1 = [] # label的高度
x_auto = [1] # label长度的放大倍数
y_auto = [1] # label高度的放大倍数

class MyLabel(QLabel):

def paintEvent(self, event):
    super().paintEvent(event)
    rect_0 = QRect(x_start[-1], y_start[-1], abs(x_length[-1]*x_auto[-1
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值