【发布时间】:2019-07-22 07:19:19
【问题描述】:
这是我在 pyqt python 3.7 中的 QGraphicsView 中显示图像的简单代码。当鼠标在 QGraphicsView 或 QGraphicsScene 的场景或窗口上按下时,我想要一个图像像素。
鼠标按下功能
鼠标按下事件处理程序
def mousePressEvent(self):
p = QtGui.QCursor.pos()
print("pressed here: ", p)
鼠标按下事件调用者
self.scene1.mousePressEvent = mousePressEvent
主代码
import cv2
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QGraphicsScene, QAction
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget)
self.graphicsView.setGeometry(QtCore.QRect(20, 10, 761, 561))
self.graphicsView.setObjectName("graphicsView")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
# ---- Mouse Press Event Handler ---- #
def mousePressEvent(self):
p = QtGui.QCursor.pos() # Here I want image pixel coordinate (x,y) how we can..?
print("pressed here: ", p)
# ---- Mouse Press Event caller ---- #
self.scene1.mousePressEvent = mousePressEvent
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
# -------------------------------------------------
image = cv2.imread('lena.jpg') # Read image
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
height, width = image.shape # read image size
self.image_disp = QImage(image.data, width, height, QImage.Format_Grayscale8)
# -------------------------------------------------
self.scene1 = QGraphicsScene()
pixMap = QPixmap.fromImage(self.image_disp)
self.scene1.addPixmap(pixMap)
self.graphicsView.setScene(self.scene1)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
【问题讨论】:
标签: opencv pyqt5 python-3.7 qgraphicsview qgraphicsscene