Python 正在检索PyQt4 QLabel mousepressevent的发件人

Python 正在检索PyQt4 QLabel mousepressevent的发件人,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我正在用PyQt4编程一个接口,我正在使用QLabel,并使用MousePresseEvent函数使它们可以单击。我有多个标签(信号)具有相同的mousepressevent插槽。以下是我想做的要点 class Example(QtGui.QWidget): def __init__(self): super(Example, self).__init__() self.initUI() def initUI(self): l

我正在用PyQt4编程一个接口,我正在使用QLabel,并使用MousePresseEvent函数使它们可以单击。我有多个标签(信号)具有相同的mousepressevent插槽。以下是我想做的要点

class Example(QtGui.QWidget):
    def __init__(self):

        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
         lbl1=QtGui.QLabel(self)
         lbl2=QtGui.QLabel(self)
         lbl1.mousePressEvent=self.exampleMousePress
         lbl2.mousePressEvent=self.exampleMousePress


    def exampleMousePress(self,event):
         print "The sender is: " + sender().text()
问题是发送方函数在这里不起作用。有没有办法在exampleMousePress函数中获取事件发送者

谢谢大家!

您可以使用来执行此操作:

class Example(QtGui.QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        lbl1 = QtGui.QLabel(self)
        lbl2 = QtGui.QLabel(self)
        lbl1.installEventFilter(self)
        lbl2.installEventFilter(self)    

    def eventFilter(self, source, event):
        if event.type() == QtCore.QEvent.MouseButtonPress:
            print "The sender is:", source.text()
        return super(Example, self).eventFilter(source, event)
您可以使用来执行此操作:

class Example(QtGui.QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        lbl1 = QtGui.QLabel(self)
        lbl2 = QtGui.QLabel(self)
        lbl1.installEventFilter(self)
        lbl2.installEventFilter(self)    

    def eventFilter(self, source, event):
        if event.type() == QtCore.QEvent.MouseButtonPress:
            print "The sender is:", source.text()
        return super(Example, self).eventFilter(source, event)

事件与信号不同。它们是两个独立的系统。信号有发送者。事实并非如此。作为发送者,您希望在这里接收什么小部件?您不能使用按钮发送信号吗?您可以更改按钮的样式表,使其看起来像标签一样平坦。对于这个程序,我特别需要一个标签,而不是按钮。谢谢你的澄清Brendan事件和信号不一样。它们是两个独立的系统。信号有发送者。事实并非如此。作为发送者,您希望在这里接收什么小部件?您不能使用按钮发送信号吗?您可以更改按钮的样式表,使其看起来像标签一样平坦。对于这个程序,我特别需要一个标签,而不是按钮。谢谢你的澄清,布伦丹。