8
http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html
我可以定義一個PyQt4的信號與由mysignal = pyqtSignal(int)
取一個整數參數。我怎樣才能定義一個信號,它包含一個整數和一串字符串,或者更一般的稱爲myobject
的對象作爲參數。
http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html
我可以定義一個PyQt4的信號與由mysignal = pyqtSignal(int)
取一個整數參數。我怎樣才能定義一個信號,它包含一個整數和一串字符串,或者更一般的稱爲myobject
的對象作爲參數。
下面的代碼創建一個信號,它接受兩個參數:一個整數和一個對象列表。用戶界面只包含一個按鈕。點擊按鈕時發出信號。
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]
。
哦,我的,很好的例子! :) – kuanyui
布拉沃。這有希望在connect()中啓用'lambda'的死亡嗎? –
你還沒有使用'pyqtSlot'裝飾器。插入之後,seg節點就會消失,所以我建議將它添加到'mySignalHandler'中。 –