PyQt中使用信 与槽的机制实现对象之间的通信。
信
当对象改变其状态时,信 就由该对象发射出去,并且对象只负责发送信 ,它不知道另一端是谁在接收这个信 。这样就做到了真正的信息封装,能确保对象被当作一个真正的软件组件来使用。
槽
用于接收信 ,并且槽只是普通的对象成员函数。一个槽并不知道是否有其他信 自己相连接,而且对象并不了解具体的通信机制。
信 和槽的绑定
通过调用QObject对象的connect()函数将某个对象的信 与另外一个对象的槽函数相关联。这样当发射者发射信 时,接受者的槽函数将被调用。
一个信 可以连接到多个槽,当信 发出后,槽函数都会被调用,但是调用的顺序是随机的,不确定的。
多个信 可以连接到同一个槽,其中任何一个信 发出,槽函数都会被执行。
信 和槽的连接可以被移除,PyQt5提供了disconnect()成员函数来进行解绑。
信 可以和另外一个信 进行关联;第一个信 发出后,第二个信 也同时发送。
一个演示信 和槽的关系的样例
1-47行生成用户界面
47-54行连接了信 与槽。
self.slider.valueChanged.connect(self.pBar.setValue)
连接滑动条的改变(信 ) 到进度条显示(槽)
self.slider.valueChanged.connect(self.lcdNumber.display)
连接滑动条的改变(信 ) 到LCD面板显示(槽)
self.buttonRun.clicked.connect(self.buttonSave.clicked)
连接运行按钮点击操作(信 ) 到保存按钮点击操作(信 )
self.buttonSave.clicked.connect(self.showMessage)
连接保存按钮点击操作(信 ) 到标签内容显示(槽)
self.buttonRun.clicked.connect(self.showMessage)
连接运行按钮点击操作(信 ) 到标签内容显示(槽)
self.buttonDisconnect.clicked.connect(self.unbindConnection)
连接解除关联按钮点击操作(信 ) 到解除绑定操作(槽)
self.buttonConnect.clicked.connect(self.bindConnection)
连接绑定关联按钮点击操作(信 ) 到绑定操作(槽)
self.buttonStop.clicked.connect(self.stop)
连接停止按钮点击操作(信 )到停止操作(槽)
66-67行解除了信 和槽的关联
def unbindConnection(self): self.slider.valueChanged.disconnect()
解除滑动条的改变(信 )的一切关联。
————————————————————————————–
That’s All .Thankyou!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!