Python GUI自学:信号与槽装饰器@pyqtSlot()
Zemise
Zemise
发布于 2022-06-10 / 37 阅读 / 0 评论 / 0 点赞

Python GUI自学:信号与槽装饰器@pyqtSlot()

书名《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, 参数):