2012年01月27日

senderを使ってシグナル元のオブジェクトを知る

2012y01m27d_015005857

シグナルとスロットを扱うときに、シグナルに反応して行われるスロットの関数内において「そもそもどいつがシグナルを送ってきたのか」を知っていると嬉しい時がある。

そこで使うのがsender()で、sender()によって生成されたオブジェクトはそのスロットの関数内でシグナルを発したオブジェクトと同じように扱うことができる。


import sys
from PyQt4 import QtGui, QtCore


class Sender(QtGui.QMainWindow):
def __init__(self):
super(Sender, self).__init__()
self.setMyself()

def setMyself(self):
btn1 = QtGui.QPushButton("goooogle", self)
btn1.move(30, 50)
btn2 = QtGui.QPushButton("yahoooooo!", self)
btn2.move(150, 50)
btn1.clicked.connect(self.buttonClicked)
btn2.clicked.connect(self.buttonClicked)

self.statusBar()
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Event sender')
self.show()

def buttonClicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + ' was pressed')

def main():
app = QtGui.QApplication(sys.argv)
ex = Sender()
sys.exit(app.exec_())

if __name__ == '__main__':
main()



senderでシグナルを発したオブジェクトを扱う



def buttonClicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + ' was pressed')


似たオブジェクトからのシグナルに対するスロットの関数を少し変えて書きたい時に、senderを使えば条件分岐で便利に書けたりすると思う。





この記事へのコメント

name:

mail:

HP:

comment:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/248717634

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。