निम्न कोड एक संकेत बनाता है जो दो तर्क लेता है: एक पूर्णांक और वस्तुओं की एक सूची। यूआई में सिर्फ एक बटन है। जब बटन क्लिक किया जाता है तो सिग्नल उत्सर्जित होता है।
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
ब्रावो। क्या यह उम्मीद है कि कनेक्ट() में 'लैम्ब्डा' की मौत को सक्षम बनाता है? –
आपने 'pyqtSlot' सजावट का उपयोग नहीं किया है। मैंने इसे डालने के बाद सीजी दोषों को दूर कर लिया है, इसलिए मैं इसे 'mySignalHandler' में जोड़ने की अनुशंसा करता हूं। –