PyQt GUI编程——信 与槽

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进行处理,非常感谢!

上一篇 2018年8月4日
下一篇 2018年8月4日

相关推荐