信号就是“某某事件发生了”这么一个信号,槽就是对应事件发生时所需采取的应对措施。
连接方式:widget.信号.connect(槽函数)
一、信号
-
obj.objectNameChanged
:对象名称发生改变时发射此信号,对应于obj.setObjectName
-
obj.destroyed
:对象销毁时发射此信号
1.1 控件内置信号
-
QPushButton().pressed
:按下 -
QPushButton().clicked
:按下并抬起
1.2 自定义信号
二、槽
- 一个信号可以连接多个槽函数
- 一个信号可以连接另一个信号
- 信号的参数可以是任何 Python 类型
- 一个槽函数可以监听多个信号
三、信号处理
widget.信号.connect(槽函数)
-
obj.disconnect()
:取消信号与槽的连接(此处 obj 可为控件或信号) -
widget.blockSignals(bool)
:临时阻断/暂停控件所有信号与槽的连接
True 表示断开;False 表示恢复 -
widget.signalsBlocked()
:信号是否被阻断 -
widget.receivers(信号)
:与当前信号连接的槽函数个数
案例:修改窗口标题时得到提示
window = QWidget()
def notice(title):
window.windowTitleChanged.disconnect()
window.setWindowTitle(f"*{title}")
window.windowTitleChanged.connect(notice)
window.windowTitleChanged.connect(notice)
window.setWindowTitle("Hello PyQt!")
网友评论