Pyqt教程(五)信号与槽
[TOC]
概念
所有继承Qwidget的控件都支持信号与槽机制
- 信号:当一个信号发生改变时,向外界发出的信息。
当一个信号被发射时,与其关联的槽函数被立刻执行。其中该对象只负责发送信号,发射该信号的对象并不知道是哪个对象在接受这个信号,这样保证了对象与对象之间的低耦合。
如果存在信号和多个槽函数相关联的时候,当信号被发射时,这些槽的执行顺序将会是随机的。
- 槽:一个执行某些操作的函数或者方法
当和槽连接的信号被发射时,槽会被调用。一个槽并不知道是否有任何信号与自己相连接。
信号与槽机制
将信号 连接 槽,当信号发出时,连接的槽函数会自动执行
信号连接
通过调用QObject对象的connect函数来将某个对象的信号与另一个对象的槽函数相关联。
1 | object.信号.connect(槽函数) |
当信号与槽没有必要保持关联时,可以使用disconnect函数来断开连接。
1 | disconnect(槽函数) |
槽函数的特点
- 一个信号可以连接多个槽:调用随机
- 多个信号可以连接到同一个槽
- 信号的参数可以是任何的python类型,如list等
- 信号和槽的连接可以被移除
- 信号可以和另外一个信号进行关联:第一个信号发出后,第二个信号也同时发送。比如关闭系统的信号发出后,同时会发出保存数据的信号
自定义信号与槽
1 | from PyQt5.QtCore import pyqtSignal |
关于连接中槽函数无法传递参数问题
1 | self.btn.clicked.connect(self.onButtonClick) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 一个正常的人!
评论