pyqt designer connect无响应_PyQt 编程入门之 信号与槽【1】

上一篇介绍了PyQt预定义信号和预定义槽的连接。本篇讲解如何自定义槽,以及如何向槽传递额外的信号参数。

信号与槽连接的格式为: object.signal.connect(callable)

obeject为QObject任何派生类的实例(比如按钮),signal为object发射的信号(如点击事件clicked),callable为槽函数名(不能带括号,所以不能带参数)。例如:

button.clicked.connect(self.on_clicked)def on_clicked(self):#在类中为方法,只带一个参数self;否则无参数 #do something pass

可以为不同的信号编写不同的槽函数。但有时候为了简洁,需要将多个信号连接到同一个槽上,并需要根据连接的不同信号做出不同的响应,但是默认情况下槽函数不能传递参数,该如何做呢?

第一种方法:用 无参的lambda函数调用有参的事件处理函数

格式为: object.signal.connect(lambda :callable(para list))

示例代码如下:

pyqt designer connect无响应_PyQt 编程入门之 信号与槽【1】_第1张图片
pyqt designer connect无响应_PyQt 编程入门之 信号与槽【1】_第2张图片
pyqt designer connect无响应_PyQt 编程入门之 信号与槽【1】_第3张图片

第二种方法:使用偏函数来封装带参数的槽。下面仅列写代码的不同部分。

64b228142e437638cd779e56eca4908a.png

第三种方法:在槽函数中使用self.sender()得到事件源。下面仅列写代码的不同部分。

pyqt designer connect无响应_PyQt 编程入门之 信号与槽【1】_第4张图片

你可能感兴趣的:(pyqt,designer,connect无响应,qml,信号槽第二次才响应)