I need to generate an event in Qlabel Pyqt5 python, it is that when I click on it I detect it and then I throw the coordinates

0

I load some images in a QLabel, I want to get it to detect the right click of the mouse and I throw the coordinates

from PyQt5.QtGui import *
import sys
import copy
sys.path.append('../')
class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(790, 570)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lblTablero = QtWidgets.QLabel(self.centralwidget)
        self.lblTablero.setGeometry(QtCore.QRect(0, 0, 790, 550))
        self.lblTablero.setText("")
        self.lblTablero.setObjectName("lblTablero")

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 802, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    Tablero = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(Tablero)
    
asked by camiloordonez01 04.06.2018 в 00:31
source

1 answer

0

Try it:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

#import copy
#sys.path.append('../')
class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(790, 570)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        #self.lblTablero = QtWidgets.QLabel(self.centralwidget)
        self.lblTablero = CustomLabel(self.centralwidget)          # +++
        #self.lblTablero.setGeometry(QtCore.QRect(0, 0, 790, 550))
        self.lblTablero.setText("lblTablero")
        self.lblTablero.setObjectName("lblTablero")

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 802, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


class AppWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()   

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.pixmap = QtGui.QPixmap("E:/_Qt/img/qt-logo.png").scaled(220, 220,  
                                     QtCore.Qt.KeepAspectRatio,
                                     QtCore.Qt.SmoothTransformation)

        self.resize(self.pixmap.width(), self.pixmap.height())
        self.ui.lblTablero.setPixmap(self.pixmap)

        self.setWindowTitle("The right button ...")
        self.setGeometry(600, 350, 500, 250)
        self.show()


class CustomLabel(QtWidgets.QLabel):
    def __init__(self, parent=None):
        super(CustomLabel, self).__init__(parent)
        self.setMouseTracking(True) 

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.RightButton:
            print(event.pos())

    def mouseMoveEvent(self, event):
        QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.PointingHandCursor)

    def leaveEvent(self, event):
        QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.ArrowCursor)


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    ex = AppWindow()
    sys.exit(app.exec_())        

    
answered by 12.06.2018 в 02:20