スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    PyQt Senderですって

     最近PythonよりもPyQtの話が多くなってきたんで、カテゴリをPythonから分けてPyQtにしました。
     何しろ自分がわからんのでw


     以前PyQtで自前のシグナルを送信する方法を。ここで書きましたが、そんな面倒な事しなくても送信元がわかると言う事をお隣のガチンコさんに教えて頂きやした!

     ずばりsenderメソッド!
     このsenderメソッドはQWidgetクラスに入ってるんで、ほとんどのウィジットで使えますね。
     senderメソッドを使用すると、直前にシグナルを送ってきたウィジットを返してくれると言う、なんともニクいヤツです。もちろん返ってくるのはウィジットのインスタンスですよ!
     これにより、一つのクラスメソッドで複数種類の処理をこなせるようになりますね!

     素敵☆(ゝω・)vキャピ
    ではサンプルコード。
    # -*- coding:utf-8 -*-
    
    import sys
    from PyQt4 import QtGui, QtCore
    
    
    class MainWidget( QtGui.QWidget ):
        def __init__( self, parent=None ):
            super( MainWidget, self ).__init__( parent )
            self.resize( 480, 250 )
            layout = QtGui.QVBoxLayout( self )
    
            # =====================================================================
            # 2つのボタンを作成する。
            # この時、両方のボタンのclickedシグナルに同一のメソッドをコネクトする。
            # ---------------------------------------------------------------------
            # 1つめのボタン。
            button1 = QtGui.QPushButton( 'Taro san!' )
            button1.clicked.connect( self.clickedCallback )
            
            # 2つめのボタン。
            button2 = QtGui.QPushButton( 'Hanako tan!' )
            button2.clicked.connect( self.clickedCallback )
            # =====================================================================
    
            # 結果を表示するテキストエディットを作成。
            self.field = QtGui.QTextEdit()
            self.field.setReadOnly( True )
    
    
            layout.addWidget( button1 )
            layout.addWidget( button2 )
            layout.addWidget( self.field )
    
        def clickedCallback( self ):
            '''ボタンの受け口となるスロット。   '''
            # ここで、シグナルの送信元(sender)を取得する。
            sender = self.sender()
            
            # ---------------------------------------------------------------------
            # 送信元の情報、送信元のtextメソッドで取れる内容をテキストとして
            # 結果表示用テキストエディットに表示する。
            text   = '''Called : %(person)s
    Sender : %(sender)s
    ''' % {
        'sender' : sender,
        'person' : sender.text()
    }
    
            self.field.setPlainText( text )
            # ---------------------------------------------------------------------
            
    
    
    if __name__ == '__main__':
        app = QtGui.QApplication( sys.argv )
        win = MainWidget()
        win.show()
        
        sys.exit( app.exec_() )
    
     Taro san!ボタンをクリックすると
    pyQtSender002.png
    かんな感じ。

     そしてHanako-tan!ボタンをクリックすると
    pyQtSender001.png
     ちゃんと情報が表示されてますね。スゲェェェェ、Qtさん素敵やでぇ!



     しかしこの情報、ワシがQt始めるならここ!って紹介したページに載っていたという・・・何事もきちんと目を通しておかないとダメですね_| ̄|○
    スポンサーサイト

    コメントの投稿

    非公開コメント

    プロフィール

    Eske

    Author:Eske
    萌えイラストレーターを目指す3DCGイラストレーター。
    現在ポケモンカードゲーム、ガンダムトライエイジ、ガンダムコンクエスト、妖怪ウォッチとりつきカードゲームなどで3DCGを使用したイラストレーターとして参加中。

    主にここでは日々気づいたメモなんかを残してます。
    イラストのお仕事も受け付けております。ココのメールアドレスからご連絡できますので、お気軽にご相談下さい。

    最新記事
    最新コメント
    カテゴリ
    最新トラックバック
    月別アーカイブ
    検索フォーム
    リンク
    QRコード
    QR
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。