Ich möchte QLabel erben, um dort Click-Event-Verarbeitung hinzuzufügen. Ich versuche, diesen Code:PyQt - QLabel erbt
class NewLabel(QtGui.QLabel):
def __init__(self, parent):
QtGui.QLabel.__init__(self, parent)
def clickEvent(self, event):
print 'Label clicked!'
Aber nach dem Klicken auf Ich habe keine Zeile ‚Label geklickt!‘
EDIT:
Okay, jetzt benutze ich nicht 'clickEvent', sondern 'mouse'. Und ich habe noch eine Frage. Wie kann ich wissen, was genau auf das Label geklickt wurde? Zum Beispiel habe ich 2 Bearbeitungsfeld und 2 Etiketten. Etiketteninhalte sind Pixmaps. Es gibt also keinen Text in den Etiketten, daher kann ich keinen Unterschied zwischen den Etiketten feststellen. Wie kann ich das machen?
EDIT2: ich diesen Code gemacht:
class NewLabel(QtGui.QLabel):
def __init__(self, firstLabel):
QtGui.QLabel.__init__(self, firstLabel)
def mousePressEvent(self, event):
print 'Clicked'
#myLabel = self.sender() # None =)
self.emit(QtCore.SIGNAL('clicked()'), "Label pressed")
In einer anderen Klasse:
self.FirstLang = NewLabel(Form)
QtCore.QObject.connect(self.FirstLang, QtCore.SIGNAL('clicked()'), self.labelPressed)
Slot in der gleichen Klasse:
def labelPressed(self):
print 'in labelPressed'
print self.sender()
Aber es ist nicht Senderobjekt in self. Was habe ich falsch gemacht?
Ich weiß nicht, wie PyQt funktioniert, aber Sie erhalten sender() von QObject, erbte die Klasse mit dem LabelPressed-Slot von QObject? es sollte, da es einen Slot hat ... zumindest in C++. –