интерактивные события в QLabel в Python с использованием в составе PyQt4?

Я работаю в Python GUI, используя библиотеку pyqt4 и новую с сигналом и слотами. Я не знаю, как поместить событие на имя метки QPLabel. Вот мой код :

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(759, 598)
        font = QtGui.QFont()
        font.setPointSize(12)
        ...
        ...
        ...
        self.QPLabel = QtGui.QLabel(Form)
        self.QPLabel.setGeometry(QtCore.QRect(620, 420, 141, 20))
        QtCore.QObject.connect(self.QPLabel, QtCore.SIGNAL(_fromUtf8("clicked()")), self.doSomething)
    def doSomething(self):
         print 'Label click'

кто-нибудь, что я должен сделать для события на этикетке для выполнения некоторых действий.

2 ответов


обновить следующую строку:

QtCore.QObject.connect(self.QPLabel, QtCore.SIGNAL(_fromUtf8("clicked()")), self.doSomething)

в:

self.QPLabel.mousePressEvent = self.doSomething

и добавить до doSomthing

...
def doSomething(self, event):
...

QLabel нет сигнала clicked, поэтому вы можете сделать одно из следующих действий:

A) производный пользовательский класс от QLabel реализуем обработчики событий мыши.

B) реализуйте обработчики событий в Ui_Form, используя стандартный QLabels и установите форму в качестве фильтра событий для меток (self.QPLabel.installEventFilter (self)).