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

イベントを信号と同じではありません。彼らは2つの別々のシステムです。信号には送信者があります。イベントはありません。送信者としてここで受け取る予定のウィジェットはどれですか? –

+0

信号を送信するためのボタンを使用できませんか?ボタンのスタイルシートを変更して、ラベルのように平坦に見せることができます。 – 101

+0

このプログラムでは、ボタンではなくラベルが必要でした。 Brendanの説明に感謝します。 –

答えて

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) 
関連する問題