Событие clickable на 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

и добавить event параметр для doSomthing

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

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

А) Извлечь пользовательский класс из QLabel реализация обработчиков для событий мыши.

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

Другие вопросы по тегам