书名《Python Qt GUI与数据可视化编程》,其章节:2.3 信号与槽的使用,37页,overload型信号的处理。
书中这个地方提到,connectSlotByName()函数进行信号与槽函数的关联时会使用一个默认的信号,例如,对于QC heckBox来说,默认使用的是不带参数的clicked()信号,而用定义函数on_chkBoxItalic_clicked(self, checked)是需要传递进来一个参数的,程序运行到这个函数时,无法给它传递一个参数checked,所以会发生异常。
解决办法是需要使用@pyqtSlot修饰符,添加@pyqtSlot(bool),修饰符指定参数类型,用于overload型信号。
问题在与当我这么使用后,会发生NameError: name 'pyqtSlot' is not defined错误,在一篇文章中看到逻辑文件里需要导入pyqtSlot,试着操作了下,这个问题得到解决,导入代码:
from PyQt5.QtCore import pyqtSlot
装饰器信号与槽的定义格式,相对该篇文章似乎也能简化一点,如:
[python]@pyqtSlot(参数)
def on_发送者对象名称_发射信号名称(self, 参数):