make QLabel clickable using PyQt5

后端 未结 2 834
不知归路
不知归路 2020-12-02 01:03

I have a Qlabel filled with QPixmap and I want to start a process/function once this label clicked. I had extended QLabel class as follows:

from PyQt5.QtCore         


        
2条回答
  •  南方客
    南方客 (楼主)
    2020-12-02 01:59

    class ClickableLabel(QtWidgets.QLabel):
        def __init__(self, whenClicked, parent=None):
            QtWidgets.QLabel.__init__(self, parent)
            self._whenClicked = whenClicked
    
        def mouseReleaseEvent(self, event):
            self._whenClicked(event)
    

    and then:

            my_label = ClickableLabel(self.my_label_clicked)
    ...
        def my_label_clicked(self, event):
            button = event.button()
            modifiers = event.modifiers()
    
            if modifiers == Qt.NoModifier and button == Qt.LeftButton:
                logger.debug('my_label_clicked: hooray!')
                return
    
            LOGGER.debug('my_label_clicked: unhandled %r', event)
    

提交回复
热议问题