七月
18
Pyside2教程:信号与槽基础
名词解释
- signal:实例的属性。它可以在某种事件发生时被施放
- event:用户操作,定时器结束,异步方法完成等
- slot:实例的方法。它可以接收信号,并相应的做出反应。注意此处的方法不一定是Qt的槽方法
我们将信号与槽连接在一起来配置我们的应用对事件的相应
# 信号与槽的用法
object1.singalName.connect(object2.slotName)
信号可携带槽可以接收的数据
# 这里的entry1和entry2都是QLineEdit
self.entry1.textChanged.connect(self.entry2.setText)
信号可以connect到其他的信号
# returnPress信号当按回车键时施放,editingFinished信号当按回车键或失去焦点时施放
# 这里需要用lambda表达式的原始connect()方法接收的是函数,而不是函数的返回值
self.entry1.editingFinished.connect(lambda : print('编辑完成'))
self.entry2.returnPressed.connect(self.entry1.editingFinished)
如果一个槽有多重不同signature的实现方式,这个槽叫做overloaded slot。PyQt会自动判断应该使用哪个槽的实现
- 如果槽需要的参数比信号发出的参数多,那么Qt会报错
- 反之,如信号发出的参数比槽需要的参数多,则Qt不会报错,只是丢弃多于的参数