2016-08-01 3 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

Для этой программы мне определенно нужен ярлык, а не кнопка. И спасибо за разъяснение Брендана. –

ответ

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) 
Смежные вопросы