捕鼠事件似乎不起作用

2024-09-28 01:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个小窗口代码,我想能够得到鼠标的x/y位置时点击。我不明白这段代码有什么问题,为什么它没有显示鼠标的位置

# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QGraphicsScene, QMainWindow
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap

class Ui_layout_window(QMainWindow):
    def setupUi(self, layout_window):
        layout_window.setObjectName("layout_window")
        layout_window.resize(749, 711)
        layout_window.setMouseTracking(True)
        self.centralwidget = QtWidgets.QWidget(layout_window)
        self.centralwidget.setMouseTracking(True)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setContentsMargins(10, 10, 10, 10)
        self.gridLayout.setSpacing(10)
        self.gridLayout.setObjectName("gridLayout")
        self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 727, 609))
        self.scrollAreaWidgetContents.setMouseTracking(True)
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)
        self.gridLayout_2.setContentsMargins(5, 5, 5, 5)
        self.gridLayout_2.setSpacing(10)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.rot_tgt_btn = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
        font = QtGui.QFont()
        font.setPointSize(10)
        self.rot_tgt_btn.setFont(font)
        self.rot_tgt_btn.setObjectName("rot_tgt_btn")
        self.gridLayout_2.addWidget(self.rot_tgt_btn, 0, 2, 1, 1)
        self.scale_spinBox = QtWidgets.QSpinBox(self.scrollAreaWidgetContents)
        self.scale_spinBox.setFont(font)
        self.scale_spinBox.setObjectName("scale_spinBox")
        self.scale_spinBox.setRange(10, 5000)
        self.scale_spinBox.setValue(1000)
        self.gridLayout_2.addWidget(self.scale_spinBox, 0, 5, 1, 1)
        self.crop_btn = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
        self.crop_btn.setFont(font)
        self.crop_btn.setObjectName("crop_btn")
        self.gridLayout_2.addWidget(self.crop_btn, 0, 3, 1, 1)
        self.graphicsView = QtWidgets.QGraphicsView(self.scrollAreaWidgetContents)
        self.graphicsView.setObjectName("graphicsView")
        self.gridLayout_2.addWidget(self.graphicsView, 1, 0, 1, 6)
        self.ror_lft_btn = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
        self.ror_lft_btn.setFont(font)
        self.ror_lft_btn.setObjectName("ror_lft_btn")
        self.gridLayout_2.addWidget(self.ror_lft_btn, 0, 1, 1, 1)
        self.scale_label = QtWidgets.QLabel(self.scrollAreaWidgetContents)
        font = QtGui.QFont()
        font.setPointSize(10)
        self.scale_label.setFont(font)
        self.scale_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.scale_label.setObjectName("scale_label")
        self.gridLayout_2.addWidget(self.scale_label, 0, 4, 1, 1)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)

        self.scene = QGraphicsScene()
        self.pixmap = QPixmap("talia.png")
        self.pixmap_scl = self.pixmap
        self.scene.addPixmap(self.pixmap_scl)
        self.graphicsView.setScene(self.scene)

        self.gridLayout.addWidget(self.scrollArea, 0, 0, 1, 1)
        self.buttonBox = QtWidgets.QDialogButtonBox(self.centralwidget)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.gridLayout.addWidget(self.buttonBox, 1, 0, 1, 1)
        layout_window.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(layout_window)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 749, 23))
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setObjectName("menuFile")
        self.menuImage = QtWidgets.QMenu(self.menubar)
        self.menuImage.setObjectName("menuImage")
        layout_window.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(layout_window)
        self.statusbar.setObjectName("statusbar")
        layout_window.setStatusBar(self.statusbar)
        self.actionLoad = QtWidgets.QAction(layout_window)
        self.actionLoad.setObjectName("actionLoad")
        self.actionCrop = QtWidgets.QAction(layout_window)
        self.actionCrop.setObjectName("actionCrop")
        self.actionZoom = QtWidgets.QAction(layout_window)
        self.actionZoom.setObjectName("actionZoom")
        self.actionRotate = QtWidgets.QAction(layout_window)
        self.actionRotate.setObjectName("actionRotate")
        self.actionRotate_Right = QtWidgets.QAction(layout_window)
        self.actionRotate_Right.setObjectName("actionRotate_Right")
        self.actionRotate_Left = QtWidgets.QAction(layout_window)
        self.actionRotate_Left.setObjectName("actionRotate_Left")
        self.actionCrop_2 = QtWidgets.QAction(layout_window)
        self.actionCrop_2.setObjectName("actionCrop_2")
        self.menuFile.addAction(self.actionLoad)
        self.menuFile.addAction(self.actionCrop)
        self.menuFile.addAction(self.actionZoom)
        self.menuFile.addAction(self.actionRotate)
        self.menuImage.addAction(self.actionRotate_Right)
        self.menuImage.addAction(self.actionRotate_Left)
        self.menuImage.addAction(self.actionCrop_2)
        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuImage.menuAction())
        self.statusbar.showMessage("text")

        self.retranslateUi(layout_window)
        self.buttonBox.accepted.connect(layout_window.close)
        self.buttonBox.rejected.connect(layout_window.close)
        self.scale_spinBox.editingFinished.connect(self.resizeimg)
        QtCore.QMetaObject.connectSlotsByName(layout_window)

    def retranslateUi(self, layout_window):
        _translate = QtCore.QCoreApplication.translate
        layout_window.setWindowTitle(_translate("layout_window", "MainWindow"))
        self.rot_tgt_btn.setText(_translate("layout_window", "Rotate Right"))
        self.crop_btn.setText(_translate("layout_window", "Crop"))
        self.ror_lft_btn.setText(_translate("layout_window", "Rotate Left"))
        self.scale_label.setText(_translate("layout_window", "Scale: "))
        self.menuFile.setTitle(_translate("layout_window", "File"))
        self.menuImage.setTitle(_translate("layout_window", "Image"))
        self.actionLoad.setText(_translate("layout_window", "Load"))
        self.actionCrop.setText(_translate("layout_window", "Crop"))
        self.actionZoom.setText(_translate("layout_window", "Zoom"))
        self.actionRotate.setText(_translate("layout_window", "Rotate"))
        self.actionRotate_Right.setText(_translate("layout_window", "Rotate Right"))
        self.actionRotate_Left.setText(_translate("layout_window", "Rotate Left"))
        self.actionCrop_2.setText(_translate("layout_window", "Crop"))

    def resizeimg(self):
        zm_fct = self.scale_spinBox.value()
        pixmap_scl = self.pixmap.scaled(zm_fct, zm_fct, QtCore.Qt.KeepAspectRatio)
        print(zm_fct)
        self.scene.clear()
        self.scene.addPixmap(pixmap_scl)
        self.graphicsView.setScene(self.scene)

    def mousePressEvent(self, p):
        x = p.x()
        y = p.y()
        print("On Hover", p.pos().x(), p.pos().y())

    def mouseMoveEvent(self, e):
        x = e.x()
        y = e.y()
        print("On Hover", e.pos().x(), e.pos().y())

        text = "x: {0},  y: {1}".format(x, y)
        self.statusbar.showMessage(text)

    def mousePressEvent(self, event):
        print(event)

    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Escape:
            self.close()

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    layout_window = QtWidgets.QMainWindow()
    ui = Ui_layout_window()
    ui.setupUi(layout_window)
    layout_window.show()
    sys.exit(app.exec_())

Tags: selfwindowtranslatefontlayoutscalesettextbtn

热门问题