2016-08-01 15 views
0

Ich programmiere eine Schnittstelle in PyQt4 und ich benutze QLabels und mache sie klickbar mit der mousepressevent Funktion. Ich habe mehrere Labels (Signale), die den gleichen mousepressevent Slot haben. Hier ist der Kern dessen, was ich versuche zu tun.Abrufen des Absenders von PyQt4 QLabel mousepressevent

Das Problem ist, dass die Absenderfunktion hier nicht funktioniert. Gibt es eine Möglichkeit, den Ereignissender in der exampleMousePress-Funktion abzurufen?

Danke euch allen!

+0

Ereignisse als Signale nicht gleich sind. Sie sind zwei getrennte Systeme. Signale haben Absender. Ereignisse nicht. Welches Widget würden Sie hier als Absender erwarten? –

+0

Können Sie keine Taste zum Senden von Signalen verwenden? Sie können das Stylesheet der Schaltfläche ändern, damit es wie eine Beschriftung aussieht. – 101

+0

Für dieses Programm brauchte ich speziell ein Label, keine Schaltfläche. Und danke für die Klarstellung Brendan. –

Antwort

0

können Sie event-filtering, dies zu tun:

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)