16

によると

http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html

で整数引数を取る pyqt4-signal を定義できます mysignal = pyqtSignal(int)。整数と文字列のリスト、またはより一般的にはmyobject引数として呼び出されるオブジェクトを取るシグナルを定義するにはどうすればよいですか。

4

1 に答える 1

22

次のコードは、整数とオブジェクトのリストの2つの引数を取るシグナルを作成します。UIにはボタンだけが含まれています。ボタンがクリックされると信号が発せられます。

from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Foo(object):
    pass

class MyWidget(QWidget):
    mysignal = pyqtSignal(int, list)

    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.hlayout = QHBoxLayout()
        self.setLayout(self.hlayout)
        self.b = QPushButton("Emit your signal!", self)
        self.hlayout.addWidget(self.b)
        self.b.clicked.connect(self.clickHandler)
        self.mysignal.connect(self.mySignalHandler)

    def clickHandler(self):
        self.mysignal.emit(5, ["a", Foo(), 6])

    def mySignalHandler(self, n, l):
        print n
        print l

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec_())

ボタンをクリックすると、次のように表示されます。

5
['a', <__main__.Foo object at 0xb7423e0c>, 6]

あなたの端末で。

于 2012-12-23T12:35:49.143 に答える