2016-08-01 58 views
0

我在PyQt4中编程接口,我使用QLabels并使用mousepressevent函数使它们可点击。我有多个标签(信号)具有相同的mousepressevent插槽。这是我想要做的事情的要点。检索PyQt4的发送者QLabel 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函数中获取事件发送者?

谢谢大家!

+0

事件是不一样的信号。他们是两个独立的系统。信号有发送者。事件不。您希望作为发件人在这里收到什么窗口小部件? –

+0

您不能使用按钮发送信号吗?您可以更改按钮的样式表,使其看起来像标签一样平整。 – 101

+0

对于这个程序,我特别需要一个标签,而不是一个按钮。并感谢Brendan的澄清。 –

回答

0

您可以使用event-filtering做到这一点:

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)