在利用QT編寫GUI程序時(shí)經(jīng)常需要一些交互操作,常見的有鼠標(biāo)事件、鍵盤事件等。今天我們要實(shí)現(xiàn)的是在label中已經(jīng)顯示的圖像中繪制矩形框,以便進(jìn)行下一步操作(如放大細(xì)節(jié),選中感興趣區(qū)域等)程序主要參考了知乎的小楊老師的專欄。
創(chuàng)新互聯(lián)建站專業(yè)提供服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買服務(wù)器托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。核心點(diǎn)是重寫Label,使其實(shí)現(xiàn)相應(yīng)的功能,看下面的一個(gè)小例子
from PyQt5.QtWidgets import QWidget, QApplication, QLabel from PyQt5.QtCore import QRect, Qt from PyQt5.QtGui import QImage, QPixmap, QPainter, QPen, QGuiApplication import cv2 import sys class MyLabel(QLabel): x0 = 0 y0 = 0 x1 = 0 y1 = 0 flag = False #鼠標(biāo)點(diǎn)擊事件 def mousePressEvent(self,event): self.flag = True self.x0 = event.x() self.y0 = event.y() #鼠標(biāo)釋放事件 def mouseReleaseEvent(self,event): self.flag = False #鼠標(biāo)移動(dòng)事件 def mouseMoveEvent(self,event): if self.flag: self.x1 = event.x() self.y1 = event.y() self.update() #繪制事件 def paintEvent(self, event): super().paintEvent(event) rect =QRect(self.x0, self.y0, abs(self.x1-self.x0), abs(self.y1-self.y0)) painter = QPainter(self) painter.setPen(QPen(Qt.red,2,Qt.SolidLine)) painter.drawRect(rect) class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.resize(675, 300) self.setWindowTitle('在label中繪制矩形') self.lb = MyLabel(self) #重定義的label self.lb.setGeometry(QRect(30, 30, 511, 541)) img = cv2.imread('2.jpg') height, width, bytesPerComponent = img.shape bytesPerLine = 3 * width cv2.cvtColor(img, cv2.COLOR_BGR2RGB, img) QImg = QImage(img.data, width, height, bytesPerLine,QImage.Format_RGB888) pixmap = QPixmap.fromImage(QImg) self.lb.setPixmap(pixmap) self.lb.setCursor(Qt.CrossCursor) self.show() if __name__ == '__main__': app = QApplication(sys.argv) x = Example() sys.exit(app.exec_())
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前題目:PyQt5在label顯示的圖片中繪制矩形的方法-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://m.rwnh.cn/article6/gepog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、小程序開發(fā)、網(wǎng)站改版、云服務(wù)器、App開發(fā)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容